a
    lcH                     @   s  d Z ddlZddlmZ ddlmZ dgZejjZ	ej
jZejjZejjZejjZejZejjZejZejZejZejjZejZd4ddZ G d	d deZ!G d
d dZ"G dd dZ#G dd dZ$G dd dZ%G dd de%ZG dd de%Z&G dd de%Z'G dd de&Z(G dd de(Z)G dd de%ZG dd de%Z*G d d! d!Z+G d"d# d#e%Z,G d$d% d%e%Z-G d&d' d'Z.G d(d) d)e.Z/G d*d+ d+e.Z0G d,d- d-e.Z1G d.d/ d/e.Z2G d0d1 d1e2Z3G d2d3 d3Z4dS )5z
    pygments.lexers.robotframework
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for Robot Framework.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer)TokenRobotFrameworkLexer c                 C   s.   |   } |d D ]}|| v r| |d} q| S )N r   )lowerreplace)stringremovechar r   Z/var/www/html/django/DPS/env/lib/python3.9/site-packages/pygments/lexers/robotframework.py	normalize/   s
    r   c                   @   s<   e Zd ZdZdZdZdgZddgZdgZdd	 Z	d
d Z
dS )r   z
    For Robot Framework test data.

    Supports both space and pipe separated plain text formats.

    .. versionadded:: 1.6
    RobotFrameworkzhttp://robotframework.orgrobotframeworkz*.robotz
*.resourceztext/x-robotframeworkc                 K   s&   d|d< d|d< t j| fi | d S )N   tabsizezUTF-8encoding)r   __init__)selfoptionsr   r   r   r   E   s    zRobotFrameworkLexer.__init__c                 c   sl   t  }t }d}| D ]N}||D ]>\}}|||D ](\}}|r:||t|fV  |t|7 }q:q&qd S Nr   )RowTokenizerVariableTokenizer
splitlinestokenizestrlen)r   textZrow_tokenizerZvar_tokenizerindexrowvaluetokenr   r   r   get_tokens_unprocessedJ   s    z*RobotFrameworkLexer.get_tokens_unprocessedN)__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesr   r#   r   r   r   r   r   7   s   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 c   sZ   t |dd}|jdk s"|ttfv r0||fV  d S | |||D ]\}}|r>||fV  q>d S )Nz$@%&identifiersr   )VariableSplitterstartCOMMENTERROR	_tokenize)r   r	   r"   varr!   r   r   r   r   X   s    
zVariableTokenizer.tokenizec                 c   s   |d |j  }||fV  |jd tfV  | |jtE d H  dtfV  |jd urxdtfV  | |jtE d H  dtfV  | ||jd  |E d H  d S )N{}[])r0   
identifierSYNTAXr   baseVARIABLEr   end)r   r4   r	   Z
orig_tokenbeforer   r   r   r3   a   s    




zVariableTokenizer._tokenizeN)r$   r%   r&   r   r3   r   r   r   r   r   V   s   	r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c                 C   sR   t  | _t | _t }t|j}t }t }|||||||||||||d| _	d S )N)settingsZsettingmetadata	variablesvariable	testcasesZtestcasetaskstaskkeywordskeywordZuserkeywordsZuserkeyword)
UnknownTable_tableRowSplitter	_splitterTestCaseTableSettingTableset_default_templateVariableTableKeywordTable_tables)r   rC   r?   rA   rF   r   r   r   r   p   s    
zRowTokenizer.__init__c                 c   s   d}d}t | j|D ]d\}}t|d d\}}|drBd}n"|dkrd|drd| || _d}| |||||E d H  q| j  d S )NF   r   #Tr   *)		enumeraterK   splitdivmod
startswith_start_tablerI   r3   end_row)r   r    	commentedheadingr   r!   	separatorr   r   r   r      s    

zRowTokenizer.tokenizec                 C   s   t |dd}| j|t S )NrT   r
   )r   rQ   getrH   )r   headerr(   r   r   r   rY      s    zRowTokenizer._start_tablec                 c   sH   |r|t fV  n4|r |tfV  n$|r0|tfV  n| j||E d H  d S N)r1   	SEPARATORHEADINGrI   r   )r   r!   r   r[   r]   r\   r   r   r   r3      s    zRowTokenizer._tokenizeN)r$   r%   r&   r   r   rY   r3   r   r   r   r   r   n   s   r   c                   @   s8   e Zd ZedZedZdd Zdd Zdd Z	d	S )
rJ   z( {2,})z((?:^| +)\|(?: +|$))c                 c   s.   | dr| jp| j}||E d H  dV  d S )Nz| 
)rX   _split_from_pipes_split_from_spaces)r   r    Zsplitterr   r   r   rV      s
    zRowSplitter.splitc                 c   s   dV  | j |E d H  d S )Nr   )_space_splitterrV   )r   r    r   r   r   rf      s    zRowSplitter._split_from_spacesc                 c   sR   | j |d\}}}|V  | j |rH| j |d\}}}|V  |V  q|V  d S NrR   )_pipe_splitterrV   search)r   r    _r]   restcellr   r   r   re      s    zRowSplitter._split_from_pipesN)
r$   r%   r&   recompilerg   ri   rV   rf   re   r   r   r   r   rJ      s
   

rJ   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 ZdS )
	TokenizerNc                 C   s
   d| _ d S r   )_indexr   r   r   r   r      s    zTokenizer.__init__c                 C   s8   |  || j}|  jd7  _t|ttr4||fg}|S rh   )r3   rq   
isinstancetyper   )r   r!   Zvalues_and_tokensr   r   r   r      s
    
zTokenizer.tokenizec                 C   s   t |t| jd }| j| S rh   )minr   _tokensr   r!   r   r   r   r   r3      s    zTokenizer._tokenizec                 C   s>   | dr|d d  }t|dd}|jdko<|jt|kS )N=z$@&r-   r   )endswithstripr/   r0   r=   r   )r   r!   r4   r   r   r   
_is_assign   s    
zTokenizer._is_assign)r$   r%   r&   rv   r   r   r3   r|   r   r   r   r   rp      s
   rp   c                   @   s   e Zd ZefZdS )CommentN)r$   r%   r&   r1   rv   r   r   r   r   r}      s   r}   c                   @   s6   e Zd ZeefZdZdZdZdZ	d	ddZ
dd ZdS )
Setting)Z
suitesetupZsuitepreconditionZsuiteteardownZsuitepostconditionZ	testsetupZ	tasksetupZtestpreconditionZtestteardownZtaskteardownZtestpostconditiontesttemplateZtasktemplate)ZlibraryresourcerA   )documentationr@   Z	forcetagsZdefaulttagsZtesttimeoutZtasktimeoutNc                 C   s   t |  || _d S ra   )rp   r   _template_setter)r   template_setterr   r   r   r      s    
zSetting.__init__c                 C   s   |dkr| j r|  | |dkrdt|}|| jv r@tdd| _qv|| jv rTt | _qv|| jvrvtS n| jrv| j	|S t
| ||S )NrR   r   F)support_assign)r   r   _keyword_settingsKeywordCall_custom_tokenizer_import_settingsImportSetting_other_settingsr2   r   rp   r3   )r   r!   r   
normalizedr   r   r   r3      s    




zSetting._tokenize)N)r$   r%   r&   SETTINGARGUMENTrv   r   r   r   r   r   r3   r   r   r   r   r~      s   
r~   c                   @   s   e Zd ZeefZdS )r   N)r$   r%   r&   IMPORTr   rv   r   r   r   r   r      s   r   c                   @   s    e Zd ZdZdZdZdd ZdS )TestCaseSetting)setuppreconditionteardownZpostconditiontemplater   )r   tagstimeoutc                 C   sJ   |dkr<t | |dd |}dtf|dd |fdtfgS t | ||S )Nr   rR   ry   r7   r8   )r~   r3   r:   )r   r!   r   rt   r   r   r   r3      s    zTestCaseSetting._tokenizeN)r$   r%   r&   r   r   r   r3   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdZdS )KeywordSetting)r   )r   	argumentsreturnr   r   N)r$   r%   r&   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZeefZdd ZdS )Variablec                 C   s$   |dkr|  |stS t| ||S r   )r|   r2   rp   r3   rw   r   r   r   r3     s    zVariable._tokenizeN)r$   r%   r&   r:   r   rv   r3   r   r   r   r   r     s   r   c                   @   s&   e Zd ZeefZdddZdd ZdS )r   Tc                 C   s   t |  | | _d| _d S r   )rp   r   _keyword_found_assigns)r   r   r   r   r   r     s    
zKeywordCall.__init__c                 C   sP   | j s"| |r"|  jd7  _tS | j r<t| ||| j S d| _ t |tS )NrR   T)	r   r|   r   r:   rp   r3   GherkinTokenizerr   KEYWORDrw   r   r   r   r3     s    zKeywordCall._tokenizeN)T)r$   r%   r&   r   r   rv   r   r3   r   r   r   r   r     s   
r   c                   @   s"   e Zd ZedejZdd ZdS )r   z^(Given|When|Then|And|But) c                 C   sB   | j |}|s||fgS | }|d | tf||d  |fgS ra   )_gherkin_prefixmatchr=   GHERKIN)r   r!   r"   r   r=   r   r   r   r   #  s
    
zGherkinTokenizer.tokenizeN)r$   r%   r&   rn   ro   
IGNORECASEr   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZefZdS )TemplatedKeywordCallN)r$   r%   r&   r   rv   r   r   r   r   r   +  s   r   c                   @   s   e Zd Zdd Zdd ZdS )ForLoopc                 C   s   t |  d| _d S NF)rp   r   _in_argumentsrr   r   r   r   r   1  s    
zForLoop.__init__c                 C   s$   | j r
tpt}| dv r d| _ |S )N)INzIN RANGET)r   r   r:   upper)r   r!   r   r"   r   r   r   r3   5  s    zForLoop._tokenizeN)r$   r%   r&   r   r3   r   r   r   r   r   /  s   r   c                   @   sB   e Zd ZdZdddZdd Zdd Zdd	 Zd
d Zdd Z	dS )_TableNc                 C   s   |   | _|| _g | _d S ra   )_tokenizer_class
_tokenizer_prev_tokenizer_prev_values_on_row)r   prev_tokenizerr   r   r   r   ?  s    
z_Table.__init__c                 c   sB   |  ||r | j| _|tfV  n| ||E d H  | j| d S ra   )
_continuesr   r   r:   r3   r   appendrw   r   r   r   r   D  s
    z_Table.tokenizec                    s    |dkot  fdd jD S )Nz...c                 3   s   | ]}  |V  qd S ra   )	_is_empty).0trr   r   r   	<genexpr>M  s   z$_Table._continues.<locals>.<genexpr>)allr   rw   r   rr   r   r   L  s    z_Table._continuesc                 C   s   |dv S )N)r   \r   r   r!   r   r   r   r   P  s    z_Table._is_emptyc                 C   s   | j |S ra   )r   r   rw   r   r   r   r3   S  s    z_Table._tokenizec                 C   s   | j | jd d S N)r   )r   r   rr   r   r   r   rZ   V  s    z_Table.end_row)N)
r$   r%   r&   r   r   r   r   r   r3   rZ   r   r   r   r   r   <  s   
r   c                   @   s   e Zd ZeZdd ZdS )rH   c                 C   s   dS r   r   rw   r   r   r   r   ]  s    zUnknownTable._continuesN)r$   r%   r&   r}   r   r   r   r   r   r   rH   Z  s   rH   c                   @   s   e Zd ZeZdS )rO   N)r$   r%   r&   r   r   r   r   r   r   rO   a  s   rO   c                   @   s*   e Zd ZeZdddZdd Zdd ZdS )	rM   Nc                 C   s   t | | || _d S ra   )r   r   r   )r   r   r   r   r   r   r   h  s    zSettingTable.__init__c                 C   s.   |dkr t |dkr t| j| _t| ||S )Nr   r   )r   r~   r   r   r   r3   rw   r   r   r   r3   l  s    zSettingTable._tokenizec                 C   s   | j | j| jd d S r   )r   r   r   rr   r   r   r   rZ   q  s    zSettingTable.end_row)N)r$   r%   r&   r~   r   r   r3   rZ   r   r   r   r   rM   e  s   
rM   c                   @   sd   e Zd ZeZdZdZe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 )rL   Nc                 C   s   | j s| jr| j durtS tS r   )_test_template_default_templater   r   rr   r   r   r   r   z  s
    zTestCaseTable._tokenizer_classc                 C   s   |dkot | ||S r   )r   r   rw   r   r   r   r     s    zTestCaseTable._continuesc                 C   s   |dkr |rd | _ t |tS |dkr\| |r\| |rRd| _ | | j| _n
|  | _|dkrv| 	|rvt
 | _|dkr| |r|tfgS t| ||S )Nr   rR   F)r   r   r   
TC_KW_NAME_is_setting_is_template_setting_classset_test_templater   _is_for_loopr   r   r:   r   r3   rw   r   r   r   r3     s    


zTestCaseTable._tokenizec                 C   s   | do|dS )Nr7   r8   )rX   rz   r   r   r   r   r     s    zTestCaseTable._is_settingc                 C   s   t |dkS )Nz
[template]r   r   r   r   r   r     s    zTestCaseTable._is_templatec                 C   s   | dot|dddkS )N:r^   for)rX   r   r   r   r   r   r     s    zTestCaseTable._is_for_loopc                 C   s   |  || _d S ra   )_is_template_setr   r   r   r   r   r   r     s    zTestCaseTable.set_test_templatec                 C   s   |  || _d S ra   )r   r   r   r   r   r   rN     s    z"TestCaseTable.set_default_templatec                 C   s   t |dvS )N)r   r   nonez${empty}r   r   r   r   r   r     s    zTestCaseTable._is_template_set)r$   r%   r&   r   r   r   r   propertyr   r   r3   r   r   r   r   rN   r   r   r   r   r   rL   u  s   
rL   c                   @   s   e Zd ZeZeZdd ZdS )rP   c                 C   s   dS r   r   r   r   r   r   r     s    zKeywordTable._is_templateN)r$   r%   r&   r   r   r   r   r   r   r   r   r   rP     s   rP   c                   @   s   e Z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d Zdd Zdd Zdd Zdd Zdd ZdS ) r/   c                 C   sX   d | _ d | _d | _d| _d| _|| _d| _z| | W n tyJ   Y n
0 | 	  d S )Nry   F)
r9   r;   r   r0   r=   _identifiers_may_have_internal_variables_split
ValueError	_finalize)r   r	   r.   r   r   r   r     s    zVariableSplitter.__init__c                 C   s   | j r|| jS | jS ra   )r   Zreplace_stringr;   )r   rA   r   r   r   get_replaced_base  s    z"VariableSplitter.get_replaced_basec                 C   sj   | j d | _d| j dd | _| jt| j  | _|  rfd| jdd | _	|  jt| j7  _d S )Nr   r   r   ry   rR   )
_variable_charsr9   joinr;   r0   r   r=    _has_list_or_dict_variable_index#_list_and_dict_variable_index_charsr   rr   r   r   r   r     s    zVariableSplitter._finalizec                 C   s   | j o| j d dkS )Nry   r8   )r   rr   r   r   r   r     s    z1VariableSplitter._has_list_or_dict_variable_indexc              	   C   s   |  |\}}|| _d| _| j| _|| dg| _g | _|| _|d7 }t||d  D ]N\}}||7 }z| || W n t	y   Y  d S 0 ||krT| 
 sT d S qTd S )NrR   r5   r   )_find_variabler0   _open_curly_variable_state_stater   r   _stringrU   StopIteration_scanning_list_variable_index)r   r	   start_indexZ	max_indexr   r   r   r   r   r     s     
zVariableSplitter._splitc                 C   s   | j | j| jfv S ra   )r   "_waiting_list_variable_index_state_list_variable_index_staterr   r   r   r   r     s    z.VariableSplitter._scanning_list_variable_indexc                 C   s^   | d}|dkrtd| ||r8| |d | S | |d|}|dkrVtd||fS )Nr6   ry   zNo variable end foundrR   zNo variable start found)rfindr   _is_escapedr   _find_start_index)r   r	   Zmax_end_indexr   r   r   r   r     s    
zVariableSplitter._find_variablec                 C   s@   | d||d }|dk rdS | ||r.|S | ||d |S )Nr5   rR   r   ry   r   )find_start_index_is_okr   )r   r	   r0   r=   r   r   r   r   r     s    z"VariableSplitter._find_start_indexc                 C   s   || | j v o| || S ra   )r   r   )r   r	   r   r   r   r   r     s    z#VariableSplitter._start_index_is_okc                 C   s0   d}|dkr,||d  dkr,|d8 }| }q|S )NFr   rR   r   r   )r   r	   r   escapedr   r   r   r     s
    zVariableSplitter._is_escapedc                 C   sf   | j | |dkrP| | j|sP|  jd8  _| jdkrb|  sFt| j| _n|| j	v rb| j
| _d S )Nr6   rR   r   )r   r   r   r   r   _is_list_or_dict_variabler   r   r   r   _internal_variable_start_stater   r   r   r   r   r   r     s    


z VariableSplitter._variable_statec                 C   s   | j d dv S )Nr   )@&)r   rr   r   r   r   r     s    z*VariableSplitter._is_list_or_dict_variablec                 C   sB   | j | _|dkr2| j| |  jd7  _d| _n|  || d S )Nr5   rR   T)r   r   r   r   r   r   r   r   r   r   r     s    z/VariableSplitter._internal_variable_start_statec                 C   s$   |dkrt | j| | j| _d S )Nr7   )r   r   r   r   r   r   r   r   r   r     s    z3VariableSplitter._waiting_list_variable_index_statec                 C   s   | j | |dkrtd S )Nr8   )r   r   r   r   r   r   r   r   %  s    z+VariableSplitter._list_variable_index_stateN)r$   r%   r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/     s   	r/   )r   )5r'   rn   Zpygments.lexerr   Zpygments.tokenr   __all__GenericHeadingrc   Keyword	Namespacer   Namer   
Subheadingr   Functionr   Stringr   r   r<   r}   r1   Punctuationrb   r:   Emphr   Errorr2   r   r   r   r   rJ   rp   r~   r   r   r   r   r   r   r   r   rH   rO   rM   rL   rP   r/   r   r   r   r   <module>   sN   
/	3
