a
    ñ»j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-present 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   úDE:\soccer\ml_env\Lib\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Z	d	d
„ Z
dd„ ZdS )r   zh
    For Robot Framework test data.

    Supports both space and pipe separated plain text formats.
    ÚRobotFrameworkzhttp://robotframework.orgÚrobotframeworkz*.robotz
*.resourceztext/x-robotframeworkz1.6c                 K   s&   d|d< d|d< t j| fi |¤Ž d S )Né   ÚtabsizezUTF-8Úencoding)r   Ú__init__)ÚselfÚoptionsr   r   r   r   D   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_unprocessedI   s    z*RobotFrameworkLexer.get_tokens_unprocessedN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚurlÚaliasesÚ	filenamesÚ	mimetypesÚversion_addedr   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   W   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Ú{Ú}ú[ú])r1   Ú
identifierÚSYNTAXr   ÚbaseÚVARIABLEr   Úend)r   r5   r	   Z
orig_tokenÚbeforer   r   r   r4   `   s    




zVariableTokenizer._tokenizeN)r$   r%   r&   r   r4   r   r   r   r   r   U   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   rD   r@   rB   rG   r   r   r   r   o   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   Ú*)	Ú	enumeraterL   ÚsplitÚdivmodÚ
startswithÚ_start_tablerJ   r4   Úend_row)r   r    Ú	commentedÚheadingr   r!   Ú	separatorr   r   r   r   ~   s    

ÿzRowTokenizer.tokenizec                 C   s   t |dd�}| j |tƒ ¡S )NrU   ©r
   )r   rR   ÚgetrI   )r   Úheaderr(   r   r   r   rZ   �   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)r2   Ú	SEPARATORÚHEADINGrJ   r   )r   r!   r   r\   r^   r]   r   r   r   r4   ‘   s    zRowTokenizer._tokenizeN)r$   r%   r&   r   r   rZ   r4   r   r   r   r   r   m   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 )
rK   z( {2,})z((?:^| +)\|(?: +|$))c                 c   s.   |  d¡r| jp| j}||ƒE d H  dV  d S )Nz| Ú
)rY   Ú_split_from_pipesÚ_split_from_spaces)r   r    Zsplitterr   r   r   rW       s
    ÿzRowSplitter.splitc                 c   s   dV  | j  |¡E d H  d S )Nr   )Ú_space_splitterrW   )r   r    r   r   r   rg   ¦   s    zRowSplitter._split_from_spacesc                 c   sR   | j  |d¡\}}}|V  | j  |¡rH| j  |d¡\}}}|V  |V  q|V  d S ©NrS   )Ú_pipe_splitterrW   Úsearch)r   r    Ú_r^   ÚrestÚcellr   r   r   rf   ª   s    zRowSplitter._split_from_pipesN)
r$   r%   r&   ÚreÚcompilerh   rj   rW   rg   rf   r   r   r   r   rK   œ   s
   

rK   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 ri   )r4   rr   Ú
isinstanceÚtyper   )r   r!   Zvalues_and_tokensr   r   r   r   º   s
    
zTokenizer.tokenizec                 C   s   t |t| jƒd ƒ}| j| S ri   )Úminr   Ú_tokens©r   r!   r   r   r   r   r4   Á   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Ústripr0   r1   r>   r   )r   r!   r5   r   r   r   Ú
_is_assignÅ   s    
zTokenizer._is_assign)r$   r%   r&   rw   r   r   r4   r}   r   r   r   r   rq   ´   s
   rq   c                   @   s   e Zd ZefZdS )ÚCommentN)r$   r%   r&   r2   rw   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ÚresourcerB   )ÚdocumentationrA   Z	forcetagsZdefaulttagsZtesttimeoutZtasktimeoutNc                 C   s   t  | ¡ || _d S rb   )rq   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 )NrS   r   F)Úsupport_assign)rƒ   r   Ú_keyword_settingsÚKeywordCallÚ_custom_tokenizerÚ_import_settingsÚImportSettingÚ_other_settingsr3   r   rq   r4   )r   r!   r   Ú
normalizedr   r   r   r4   Þ   s    




zSetting._tokenize)N)r$   r%   r&   ÚSETTINGÚARGUMENTrw   r†   r‰   r‹   rˆ   r   r4   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Ž   rw   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   rS   rz   r8   r9   )r   r4   r;   )r   r!   r   ru   r   r   r   r4   ø   s    zTestCaseSetting._tokenizeN)r$   r%   r&   r†   r‰   r‹   r4   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}   r3   rq   r4   rx   r   r   r   r4     s    zVariable._tokenizeN)r$   r%   r&   r;   rŽ   rw   r4   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   )rq   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 )NrS   T)	r›   r}   rœ   r;   rq   r4   ÚGherkinTokenizerr   ÚKEYWORDrx   r   r   r   r4     s    zKeywordCall._tokenizeN)T)r$   r%   r&   rž   rŽ   rw   r   r4   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 rb   )Ú_gherkin_prefixÚmatchr>   ÚGHERKIN)r   r!   r"   r    r>   r   r   r   r   "  s
    
zGherkinTokenizer.tokenizeN)r$   r%   r&   ro   rp   Ú
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Ž   rw   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)rq   r   Ú_in_argumentsrs   r   r   r   r   0  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   r4   4  s    zForLoop._tokenizeN)r$   r%   r&   r   r4   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 rb   )Ú_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 rb   )Ú
_continuesr¬   r«   r;   r4   r­   Úappendrx   r   r   r   r   C  s
    z_Table.tokenizec                    s    |dkot ‡ fdd„ˆ jD ƒƒS )Nz...c                 3   s   | ]}ˆ   |¡V  qd S rb   )Ú	_is_empty)Ú.0Útrs   r   r   Ú	<genexpr>L  s   ÿz$_Table._continues.<locals>.<genexpr>)Úallr­   rx   r   rs   r   r¯   K  s    ÿz_Table._continuesc                 C   s   |dv S )N)r   ú\r   ©r   r!   r   r   r   r±   O  s    z_Table._is_emptyc                 C   s   | j  |¡S rb   )r«   r   rx   r   r   r   r4   R  s    z_Table._tokenizec                 C   s   | j | jd� d S ©N)r®   )r   r«   rs   r   r   r   r[   U  s    z_Table.end_row)N)
r$   r%   r&   rª   r   r   r¯   r±   r4   r[   r   r   r   r   r©   ;  s   
r©   c                   @   s   e Zd ZeZdd„ ZdS )rI   c                 C   s   dS r¥   r   rx   r   r   r   r¯   \  s    zUnknownTable._continuesN)r$   r%   r&   r~   rª   r¯   r   r   r   r   rI   Y  s   rI   c                   @   s   e Zd ZeZdS )rP   N)r$   r%   r&   rš   rª   r   r   r   r   rP   `  s   rP   c                   @   s*   e Zd ZeZddd„Zdd„ Zdd„ ZdS )	rN   Nc                 C   s   t  | |¡ || _d S rb   )r©   r   rƒ   )r   r„   r®   r   r   r   r   g  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©   r4   rx   r   r   r   r4   k  s    zSettingTable._tokenizec                 C   s   | j | j| jd� d S r¸   )r   rƒ   r«   rs   r   r   r   r[   p  s    zSettingTable.end_row)N)r$   r%   r&   r   rª   r   r4   r[   r   r   r   r   rN   d  s   
rN   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 )rM   Nc                 C   s   | j s| jr| j durtS tS r¥   )Ú_test_templateÚ_default_templater£   r‡   rs   r   r   r   rª   y  s
    ÿzTestCaseTable._tokenizer_classc                 C   s   |dkot  | ||¡S r   )r©   r¯   rx   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   rS   F)r¹   r�   r   Ú
TC_KW_NAMEÚ_is_settingÚ_is_templateÚ_setting_classÚset_test_templater«   Ú_is_for_loopr¤   r±   r;   r©   r4   rx   r   r   r   r4   ƒ  s    


zTestCaseTable._tokenizec                 C   s   |  d¡o| d¡S )Nr8   r9   )rY   r{   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)rY   r   r·   r   r   r   rÀ   š  s    zTestCaseTable._is_for_loopc                 C   s   |   |¡| _d S rb   )Ú_is_template_setr¹   ©r   r”   r   r   r   r¿   �  s    zTestCaseTable.set_test_templatec                 C   s   |   |¡| _d S rb   )rÄ   rº   rÅ   r   r   r   rO      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¯   r4   r¼   r½   rÀ   r¿   rO   rÄ   r   r   r   r   rM   t  s   
rM   c                   @   s   e Zd ZeZeZdd„ ZdS )rQ   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   rQ   §  s   rQ   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 ) r0   c                 C   sX   d | _ d | _d | _d| _d| _|| _d| _z|  |¡ W n tyJ   Y n
0 |  	¡  d S )Nrz   F)
r:   r<   r   r1   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 rb   )rÉ   Zreplace_stringr<   )r   rB   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   rz   rS   )
Ú_variable_charsr:   Újoinr<   r1   r   r>   Ú _has_list_or_dict_variable_indexÚ#_list_and_dict_variable_index_charsr   rs   r   r   r   rÌ   Ç  s    zVariableSplitter._finalizec                 C   s   | j o| j d dkS )Nrz   r9   )rÑ   rs   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 )NrS   r6   r   )Ú_find_variabler1   Ú_open_curlyÚ_variable_stateÚ_staterÎ   rÑ   Ú_stringrV   Ú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 rb   )rÕ   Ú"_waiting_list_variable_index_stateÚ_list_variable_index_staters   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 )Nr7   rz   zNo variable end foundrS   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 )Nr6   rS   r   rz   r   )ÚfindÚ_start_index_is_okrÞ   )r   r	   r1   r>   r   r   r   r   rÞ   ô  s    z"VariableSplitter._find_start_indexc                 C   s   || | j v o|  ||¡ S rb   )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   rS   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 )Nr7   rS   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Î   rs   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 )Nr6   rS   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 )Nr8   )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 )Nr9   )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   r0   ±  s   	r0   )r   )5r'   ro   Zpygments.lexerr   Zpygments.tokenr   Ú__all__ÚGenericÚHeadingrd   ÚKeywordÚ	Namespacer�   ÚNamer�   Ú
Subheadingr»   ÚFunctionrž   ÚStringrŽ   rš   r=   r~   r2   ÚPunctuationrc   r;   ÚEmphr¡   ÚErrorr3   r   r   r   r   rK   rq   r   rŠ   r�   r—   r‡   r�   r£   r¤   r©   rI   rP   rN   rM   rQ   r0   r   r   r   r   Ú<module>   sN   
/	3
