U
    EZh~!                     @   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   s<  |  | | jd k	r$| j| jkrN| j| j | j| j| jd dV  |   q
| j| jkr| j}| j}|  | jkr|| j7 }qfd|||t| dV  q
| j| jkr|   q
| jdkr.| j}|  }|dkr|   dd||d dV  n<|d	kr|   d
d||d dV  ndd||d dV  q
| jdkrF| 	 V  q
| jdkrd| 
dddV  q
| jdkr| 
dddV  q
| jdkr|  V  q
| j| jkr| j}|  }dt|||t| dV  q
| jdkr.| j}|  }t|dkrdt|||t| dV  nt||d| dq
| jdkrF|  V  q
| jdkrd| 
dddV  q
| jdkr| 
ddd V  q
| jd!kr| 
dd"d#V  q
| jdkr
|  dkrd$d%| jd | jdV  |   n,| jd kr| j}n
| jd }t|dd&dq
t| j| jd'| j dq
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   U/home/aprabhat/apps/x.techxrdev.in/venv/lib/python3.8/site-packages/jmespath/lexer.pytokenize   s    

 
 


 

 
 
 

 

 

 zLexer.tokenizec                 C   s*   | j }| j}|  | jkr&|| j7 }q|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 | _n|  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rp| jdkr6|d7 }|   | jd kr\t|| j|d  d| d|| j7 }|   q|   |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 nf tk
r   z td|  }tdt W n0 tk
r   t	|| j
|d  d| dY nX Y nX | 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   s~   | j }d| d d }z| j | }dt|||dW S  tk
rx } z$t|dd }t|||dW 5 d }~X Y nX d S )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      s0   
W	r   )	rj   r\   jsonr   Zjmespath.exceptionsr   r   objectr   rO   rO   rO   rP   <module>   s   