o
    .d                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ G dd deZG dd deZdS )z7Parse tree node and pseudo "tag" for output statements.    )List)Optional)TextIO)	ChildNode)Node)Context)
Expression)expect)TokenStream)to_liquid_string)Tag)TOKEN_STATEMENT)Tokenc                   @   s   e Zd ZdZdZdZdedefddZde	fd	d
Z
de	fddZdededee fddZdededee fddZdee fddZdS )StatementNodez1Parse tree node representing an output statement.tok
expressionTr   r   c                 C   s   || _ || _d S Nr   )selfr   r    r   P/var/www/Matress/matenv/lib/python3.10/site-packages/liquid/builtin/statement.py__init__   s   
zStatementNode.__init__returnc                 C   s   d| j  dS )N`)r   r   r   r   r   __str__   s   zStatementNode.__str__c                 C   s   d| j  d| jdS )NzStatementNode(tok=z, expression=)r   r   r   r   r   __repr__"   s   zStatementNode.__repr__contextbufferc                 C   s"   | j |}|t||j d S r   )r   evaluatewriter   
autoescaper   r   r   valr   r   r   render_to_output%   s   zStatementNode.render_to_outputc                    s*   | j |I d H }|t||j d S r   )r   evaluate_asyncr!   r   r"   r#   r   r   r   render_to_output_async*   s   z$StatementNode.render_to_output_asyncc                 C   s   t | jj| jdgS )N)linenumr   )r   r   r(   r   r   r   r   r   children1   s   zStatementNode.childrenN)__name__
__module____qualname____doc__	__slots__force_outputr   r   r   strr   r   r   r   r   boolr%   r'   r   r   r)   r   r   r   r   r      s     
r   c                   @   s*   e Zd ZdZeZdZdedefddZ	dS )	Statementz@Pseudo "tag" to register output statements with the environment.Fstreamr   c                 C   s$   |j }t|t t|| j|jS r   )currentr	   r   r   envparse_filtered_expression_valuevalue)r   r3   r   r   r   r   parse;   s   
zStatement.parseN)
r*   r+   r,   r-   r   nameblockr
   r   r8   r   r   r   r   r2   5   s
    r2   N)r-   typingr   r   r   
liquid.astr   r   liquid.contextr   liquid.expressionr   liquid.parser	   liquid.streamr
   liquid.stringifyr   
liquid.tagr   liquid.tokenr   r   r   r2   r   r   r   r   <module>   s     !