o
    h~!                     @   s@   d dl Z d dlZd dlmZ d dlmZmZ G dd deZdS )    N)loads)
LexerErrorEmptyExpressionErrorc                   @   s   e Zd Zeejd Zeejej d ZeejZ	edZ
ddddddd	d
ddd
Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd S )!Lexer_z 	
dotstarZrbracketcommacoloncurrentZlparenZrparenZlbracerbrace)
.*],:@(){}c                 c   sH   |  | | jd ur| j| jv r)| j| j | j| j| jd dV  |   nj| j| jv rV| j}| j}|  | jv rH|| j7 }|  | jv s<d|||t| dV  n=| j| jv rb|   n1| jdkr| j}|  }|dkr|   dd||d dV  n|d	kr|   d
d||d dV  ndd||d dV  n| jdkr| 	 V  n| jdkr| 
dddV  n| jdkr| 
dddV  n| jdkr|  V  n| j| jv r| j}|  }dt|||t| dV  n| jdkr| j}|  }t|dkrdt|||t| dV  nt||d| d| jdkr&|  V  nm| jdkr5| 
dddV  n^| jdkrD| 
ddd V  nO| jd!krS| 
dd"d#V  n@| jdkr|  dkrqd$d%| jd | jdV  |   n"| jd u r{| j}n| jd }t|dd&dt| j| jd'| j d| jd usd(d)| j| jdV  d S )*N   typevaluestartendZunquoted_identifier[r   flattenz[]   ?filterz[?Zlbracket'|orpipe&andZexpref`number-zUnknown token '%s'Zlexer_positionZlexer_valuemessage"<=Zltelt>Zgtegt!nenoteqz==zUnknown token '='zUnknown token %seof )_initialize_for_expression_currentSIMPLE_TOKENS	_position_nextSTART_IDENTIFIERVALID_IDENTIFIERlen
WHITESPACE_consume_raw_string_literal_match_or_else_consume_literalVALID_NUMBER_consume_numberintr   _consume_quoted_identifier_length)self
expressionr   buff	next_charposition rO   V/var/www/html/magazine_api/magazine_env/lib/python3.10/site-packages/jmespath/lexer.pytokenize   s   














RzLexer.tokenizec                 C   s6   | j }| j}|  | jv r|| j7 }|  | jv s|S )N)r<   r:   r=   rE   )rJ   r   rL   rO   rO   rP   rF   q   s   
zLexer._consume_numberc                 C   s@   |st  d| _|| _t| j| _| j| j | _t| j| _d S )Nr   )r   r<   _expressionlist_charsr:   r@   rI   )rJ   rK   rO   rO   rP   r9   x   s   z Lexer._initialize_for_expressionc                 C   s>   | j | jd krd | _| jS |  j d7  _ | j| j  | _| jS )Nr   )r<   rI   r:   rT   )rJ   rO   rO   rP   r=      s   zLexer._nextc                 C   s   | j }d}|   | j|kr<| jdkr|d7 }|   | jd u r.t|| j|d  d| d|| j7 }|   | j|ks|   |S )Nr8   \zUnclosed %s delimiterr+   )r<   r=   r:   r   rR   )rJ   	delimiterr   rL   rO   rO   rP   _consume_until   s"   




zLexer._consume_untilc                 C   s   | j }| ddd}zt|}W n/ tyA   ztd|  }tdt W n ty>   t	|| j
|d  d| dw Y nw | j | }d|||dS )	Nr(   z\`z"%s"z deprecated string literal syntaxzBad token %sr+   literalr   )r<   rW   replacer   
ValueErrorlstripwarningswarnPendingDeprecationWarningr   rR   )rJ   r   lexemeZparsed_json	token_lenrO   rO   rP   rD      s,   
zLexer._consume_literalc              
   C   sp   | j }d| d d }z| j | }dt|||dW S  ty7 } zt|dd }t|||dd }~ww )Nr-   Zquoted_identifierr   r   r   r+   )r<   rW   r   rZ   strsplitr   )rJ   r   r_   r`   eerror_messagerO   rO   rP   rH      s   
z Lexer._consume_quoted_identifierc                 C   s0   | j }| ddd}| j | }d|||dS )Nr"   z\'rX   r   )r<   rW   rY   )rJ   r   r_   r`   rO   rO   rP   rB      s   
z!Lexer._consume_raw_string_literalc                 C   sH   | j }| j}|  }||kr|   ||| ||d dS ||||dS )Nr   r   )r<   r:   r=   )rJ   expectedZ
match_typeZ	else_typer   r   rM   rO   rO   rP   rC      s   zLexer._match_or_elseN)__name__
__module____qualname__setstringascii_lettersr>   digitsr?   rE   rA   r;   rQ   rF   r9   r=   rW   rD   rH   rB   rC   rO   rO   rO   rP   r      s2    
W	r   )	rj   r\   jsonr   Zjmespath.exceptionsr   r   objectr   rO   rO   rO   rP   <module>   s
    