o
    .do                     @   s<  d Z ddl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 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 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, dd*lm-Z- dd+lm.Z. dd,lm/Z/ dd-lm0Z0 eefeefe.efe)d.fed/fe d0fed1fee
fe"d2fe,d3fe!d4fe+d5fed6fed7fed8fe(d9fd:e#d;fe-d<fed=ffZ1e2eeeeeeee$e&e'e/gZ3e*d>fge1R Z4e2e%ge3Z5e6d?7d@dA e1D ej8Z9e6d?7dBdA e4D ej8Z:dKdDe;dEe<dFee fdGdHZ=dKdDe;dEe<dFee fdIdJZ>dS )LzETokenize liquid filtered expressions with optional inline conditions.    N)Iterator)LiquidSyntaxError)GROUP_IDENTINDEX)GROUP_IDENTQUOTED)GROUP_QUOTED)IDENTIFIER_PATTERN)IDENTINDEX_PATTERN)IDENTSTRING_PATTERN)STRING_PATTERN)Token)	TOKEN_AND)TOKEN_BLANK)TOKEN_COLON)TOKEN_COMMA)TOKEN_CONTAINS)	TOKEN_DOT)TOKEN_DPIPE)
TOKEN_ELSE)TOKEN_EMPTY)TOKEN_FALSE)TOKEN_FLOAT)TOKEN_IDENTIFIER)TOKEN_IDENTINDEX)TOKEN_IDENTSTRING)TOKEN_IF)TOKEN_ILLEGAL)TOKEN_INTEGER)TOKEN_LBRACKET)TOKEN_LPAREN)TOKEN_NEWLINE)	TOKEN_NIL)	TOKEN_NOT)
TOKEN_NULL)TOKEN_OR)
TOKEN_PIPE)TOKEN_RANGE)TOKEN_RANGE_LITERAL)TOKEN_RBRACKET)TOKEN_RPAREN)
TOKEN_SKIP)TOKEN_STRING)
TOKEN_TRUE)	operatorsz\.\.z-?\d+\.(?!\.)\d*z-?\d+\bz\.z\(z\)z\[],:z\|\|z\|)OPz[!=<>]{1,2}z\nz[ \t\r]+.z\((?=.+?\.\.)|c                 c   &    | ]\}}d | d| dV  qdS z(?P<>)N .0namepatternr7   r7   Z/var/www/Matress/matenv/lib/python3.10/site-packages/liquid/expressions/conditional/lex.py	<genexpr>f      $ r=   c                 c   r3   r4   r7   r8   r7   r7   r<   r=   k   r>      sourcelinenumreturnc                 c   s    t }t| D ]}|j}|dusJ | }|d}|tkr'||v r'|}n\|tkr1|t}nR|t	kr=t}|t
}nF|tkrG|t}n<|dkrhzt| }W n1 tyg } z
td||d|d}~ww |tkrq|d7 }q|tkrvq|tkrtd||d||7 }|||fV  qdS )z+Yield tokens from a conditional expression.N
r0   unknown operator rA   r?   unexpected )keywords	OUTPUT_REfinditer	lastgroupgroupcountr   r   r   r   r   r*   r   r,   KeyErrorr   r   r)   r   r@   rA   	_keywordsmatchkindvaluenewlineserrr7   r7   r<   tokenizep   sL   
rU   c                 c   s>   t }t| D ]}|j}|dusJ | }|d}|tkr'||v r'|}nk|tkr6|| ||fV  t}n\|t	kr@|t
}nR|tkrLt}|t}nF|tkrV|t}n<|dkrwzt| }W n1 tyv } z
td||d|d}~ww |tkr|d7 }q|tkrq|tkrtd||d||7 }|||fV  qdS )zYield tokens from a conditional expression.

    This tokenizer includes extra tokens intended to distinguish the start of a range
    expression from the start of a logical group.
    NrC   r0   rD   rE   r?   rF   )not_keywordsPAREN_TOKENS_RErI   rJ   rK   rL   r   r&   r   r   r   r   r   r*   r   r,   rM   r   r   r)   r   rN   r7   r7   r<   tokenize_with_parens   sR   
rX   )r?   )?__doc__retypingr   liquid.exceptionsr   liquid.expressions.commonr   r   r   r   r   r	   r
   r   liquid.tokenr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   token_rules	frozensetrG   paren_token_rulesrV   compilejoinDOTALLrH   rW   strintrU   rX   r7   r7   r7   r<   <module>   s     '