o
    Ñ­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   ú[/var/www/html/CropPilot/venv/lib/python3.10/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   sn   � t ƒ }tƒ }d}| ¡ D ]'}| |¡D ]\}}| ||¡D ]\}}|r2||t|ƒfV  |t|ƒ7 }qqqd S ©Nr   )ÚRowTokenizerÚVariableTokenizerÚ
splitlinesÚtokenizeÚstrÚlen)r   ÚtextÚrow_tokenizerÚ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                   @   ó   e Zd Zdd„ Zdd„ ZdS )r   c                 c   s\   � t |dd�}|jdk s|ttfv r||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r=dtfV  |  |jt¡E d H  dtfV  |  ||jd … |¡E d H  d S )NÚ{Ú}ú[ú])r4   Ú
identifierÚSYNTAXr   ÚbaseÚVARIABLEr!   Úend)r   r8   r	   Ú
orig_tokenÚbeforer   r   r   r7   `   s   €




 zVariableTokenizer._tokenizeN)r&   r'   r(   r   r7   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)ÚsettingsÚsettingÚmetadataÚ	variablesÚvariableÚ	testcasesÚtestcaseÚtasksÚtaskÚkeywordsÚkeywordÚuserkeywordsÚuserkeyword)
ÚUnknownTableÚ_tableÚRowSplitterÚ	_splitterÚTestCaseTableÚSettingTableÚset_default_templateÚVariableTableÚKeywordTableÚ_tables)r   rI   rD   rG   rM   r   r   r   r   o   s   
úzRowTokenizer.__init__c                 c   sŽ   � d}d}t | j |¡ƒD ]2\}}t|d dƒ\}}| d¡r"d}n|dkr3| d¡r3|  |¡| _d}|  |||||¡E d H  q| j ¡  d S )NFé   r   ú#Tr   Ú*)	Ú	enumeraterT   ÚsplitÚdivmodÚ
startswithÚ_start_tablerR   r7   Úend_row)r   r"   Ú	commentedÚheadingr!   r#   Ú	separatorr   r   r   r   ~   s   €

ÿzRowTokenizer.tokenizec                 C   s   t |dd�}| j |tƒ ¡S )Nr]   ©r
   )r   rZ   ÚgetrQ   )r   Úheaderr*   r   r   r   rb   �   s   zRowTokenizer._start_tablec                 c   sP   � |r
|t fV  d S |r|tfV  d S |r|tfV  d S | j ||¡E d H  d S ©N)r5   Ú	SEPARATORÚHEADINGrR   r   )r   r#   r!   rd   rf   re   r   r   r   r7   ‘   s   €zRowTokenizer._tokenizeN)r&   r'   r(   r   r   rb   r7   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 )
rS   z( {2,})z((?:^| +)\|(?: +|$))c                 c   s0   � |  d¡r	| jp| j}||ƒE d H  dV  d S )Nz| Ú
)ra   Ú_split_from_pipesÚ_split_from_spaces)r   r"   Úsplitterr   r   r   r_       s   €ÿ
zRowSplitter.splitc                 c   s   � dV  | j  |¡E d H  d S )Nr   )Ú_space_splitterr_   )r   r"   r   r   r   ro   ¦   s   €zRowSplitter._split_from_spacesc                 c   s^   � | j  |d¡\}}}|V  | j  |¡r*| j  |d¡\}}}|V  |V  | j  |¡s|V  d S ©Nr[   )Ú_pipe_splitterr_   Úsearch)r   r"   Ú_rf   ÚrestÚcellr   r   r   rn   ª   s   €ý
zRowSplitter._split_from_pipesN)
r&   r'   r(   ÚreÚcompilerq   rs   r_   ro   rn   r   r   r   r   rS   œ   s    

rS   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ƒƒr||fg}|S rr   )r7   r{   Ú
isinstanceÚtyper   )r   r#   Úvalues_and_tokensr   r   r   r   º   s
   
zTokenizer.tokenizec                 C   s   t |t| jƒd ƒ}| j| S rr   )Úminr   Ú_tokens©r   r#   r!   r   r   r   r7   Á   s   
zTokenizer._tokenizec                 C   s>   |  d¡r|d d…  ¡ }t|dd�}|jdko|jt|ƒkS )Nú=éÿÿÿÿz$@&r1   r   )ÚendswithÚstripr3   r4   rA   r   )r   r#   r8   r   r   r   Ú
_is_assignÅ   s   
zTokenizer._is_assign)r&   r'   r(   r�   r   r   r7   r‡   r   r   r   r   rz   ´   s    rz   c                   @   ó   e Zd ZefZdS )ÚCommentN)r&   r'   r(   r5   r�   r   r   r   r   r‰   Ì   ó    
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)Ú
suitesetupÚsuitepreconditionÚsuiteteardownÚsuitepostconditionÚ	testsetupÚ	tasksetupÚtestpreconditionÚtestteardownÚtaskteardownÚtestpostconditionÚtesttemplateÚtasktemplate)ÚlibraryÚresourcerG   )ÚdocumentationrF   Ú	forcetagsÚdefaulttagsÚtesttimeoutÚtasktimeoutNc                 C   s   t  | ¡ || _d S rj   )rz   r   Ú_template_setter)r   Útemplate_setterr   r   r   r   Ú   ó   

zSetting.__init__c                 C   s„   |dkr| j r|   |¡ |dkr2t|ƒ}|| jv r tdd�| _n|| jv r*tƒ | _n|| jvr1tS n	| jr;| j 	|¡S t
 | ||¡S )Nr[   r   F)Úsupport_assign)rŸ   r   Ú_keyword_settingsÚKeywordCallÚ_custom_tokenizerÚ_import_settingsÚImportSettingÚ_other_settingsr6   r   rz   r7   )r   r#   r!   Ú
normalizedr   r   r   r7   Þ   s   




ÿzSetting._tokenizerj   )r&   r'   r(   ÚSETTINGÚARGUMENTr�   r£   r¦   r¨   r¥   r   r7   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«   r�   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ÚteardownÚ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   r[   r„   r;   r<   )r‹   r7   r>   )r   r#   r!   r~   r   r   r   r7   ø   s   zTestCaseSetting._tokenizeN)r&   r'   r(   r£   r¦   r¨   r7   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‡   r6   rz   r7   r‚   r   r   r   r7     s   zVariable._tokenizeN)r&   r'   r(   r>   r«   r�   r7   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   )rz   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 )Nr[   T)	r¹   r‡   rº   r>   rz   r7   ÚGherkinTokenizerr   ÚKEYWORDr‚   r   r   r   r7     s   zKeywordCall._tokenizeN)T)r&   r'   r(   r¼   r«   r�   r   r7   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 rj   )Ú_gherkin_prefixÚmatchrA   ÚGHERKIN)r   r#   r$   r¾   rA   r   r   r   r   "  s
   
 zGherkinTokenizer.tokenizeN)r&   r'   r(   rx   ry   Ú
IGNORECASEr½   r   r   r   r   r   r»     s    r»   c                   @   rˆ   )ÚTemplatedKeywordCallN)r&   r'   r(   r«   r�   r   r   r   r   rÁ   *  rŠ   rÁ   c                   @   r0   )ÚForLoopc                 C   s   t  | ¡ d| _d S ©NF)rz   r   Ú_in_argumentsr|   r   r   r   r   0  r¡   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   r7   4  s   zForLoop._tokenizeN)r&   r'   r(   r   r7   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 rj   )Ú_tokenizer_classÚ
_tokenizerÚ_prev_tokenizerÚ_prev_values_on_row)r   Úprev_tokenizerr   r   r   r   >  s   

z_Table.__init__c                 c   sD   � |   ||¡r| j| _|tfV  n	|  ||¡E d H  | j |¡ d S rj   )Ú
_continuesrÊ   rÉ   r>   r7   rË   Úappendr‚   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 rj   )Ú	_is_empty)Ú.0Útr|   r   r   Ú	<genexpr>L  s   € ÿz$_Table._continues.<locals>.<genexpr>)ÚallrË   r‚   r   r|   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 rj   )rÉ   r   r‚   r   r   r   r7   R  ó   z_Table._tokenizec                 C   s   | j | jd� d S ©N)rÌ   )r   rÉ   r|   r   r   r   rc   U  s   z_Table.end_rowrj   )
r&   r'   r(   rÈ   r   r   rÍ   rÏ   r7   rc   r   r   r   r   rÇ   ;  s    
rÇ   c                   @   s   e Zd ZeZdd„ ZdS )rQ   c                 C   ó   dS rÃ   r   r‚   r   r   r   rÍ   \  ó   zUnknownTable._continuesN)r&   r'   r(   r‰   rÈ   rÍ   r   r   r   r   rQ   Y  s    rQ   c                   @   s   e Zd ZeZdS )rX   N)r&   r'   r(   r¸   rÈ   r   r   r   r   rX   `  s    rX   c                   @   s*   e Zd ZeZddd„Zdd„ Zdd„ ZdS )	rV   Nc                 C   s   t  | |¡ || _d S rj   )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Ç   r7   r‚   r   r   r   r7   k  s   zSettingTable._tokenizec                 C   s   | j | j| jd� d S r×   )r   rŸ   rÉ   r|   r   r   r   rc   p  ó   zSettingTable.end_rowrj   )r&   r'   r(   r‹   rÈ   r   r7   rc   r   r   r   r   rV   d  s
    
rV   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 )rU   Nc                 C   s   | j s| jr| j durtS tS rÃ   )Ú_test_templateÚ_default_templaterÁ   r¤   r|   r   r   r   rÈ   y  s   
zTestCaseTable._tokenizer_classc                 C   s   |dko
t  | ||¡S r   )rÇ   rÍ   r‚   r   r   r   rÍ   €  rÚ   zTestCaseTable._continuesc                 C   s    |dkr|r	d | _ tƒ  |t¡S |dkr.|  |¡r.|  |¡r)d| _ |  | j¡| _n|  ¡ | _|dkr;|  	|¡r;t
ƒ | _|dkrI|  |¡rI|tfgS t | ||¡S )Nr   r[   F)rÛ   r»   r   Ú
TC_KW_NAMEÚ_is_settingÚ_is_templateÚ_setting_classÚset_test_templaterÉ   Ú_is_for_looprÂ   rÏ   r>   rÇ   r7   r‚   r   r   r   r7   ƒ  s   


zTestCaseTable._tokenizec                 C   s   |  d¡o	| d¡S )Nr;   r<   )ra   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ß   —  rÖ   zTestCaseTable._is_templatec                 C   s   |  d¡ot|dd�dkS )Nú:rg   Úfor)ra   r   rÕ   r   r   r   râ   š  s   zTestCaseTable._is_for_loopc                 C   ó   |   |¡| _d S rj   )Ú_is_template_setrÛ   ©r   r²   r   r   r   rá   �  ó   zTestCaseTable.set_test_templatec                 C   ræ   rj   )rç   rÜ   rè   r   r   r   rW      ré   z"TestCaseTable.set_default_templatec                 C   s   t |ƒdvS )N)r   rÔ   Únonez${empty}rã   rè   r   r   r   rç   £  rÖ   zTestCaseTable._is_template_set)r&   r'   r(   r­   rà   rÛ   rÜ   ÚpropertyrÈ   rÍ   r7   rÞ   rß   râ   rá   rW   rç   r   r   r   r   rU   t  s    
rU   c                   @   s   e Zd ZeZeZdd„ ZdS )rY   c                 C   rØ   rÃ   r   rÕ   r   r   r   rß   «  rÙ   zKeywordTable._is_templateN)r&   r'   r(   r¤   rÈ   rµ   rà   rß   r   r   r   r   rY   §  s    rY   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 ) r3   c                 C   sZ   d | _ d | _d | _d| _d| _|| _d| _z|  |¡ W n
 ty&   Y d S w |  	¡  d S )Nr„   F)
r=   r?   r!   r4   rA   Ú_identifiersÚ_may_have_internal_variablesÚ_splitÚ
ValueErrorÚ	_finalize)r   r	   r2   r   r   r   r   ³  s   ÿzVariableSplitter.__init__c                 C   s   | j r	| | j¡S | jS rj   )rí   Úreplace_stringr?   )r   rG   r   r   r   Úget_replaced_baseÂ  s   z"VariableSplitter.get_replaced_basec                 C   sn   | j d | _d | j dd… ¡| _| jt| j ƒ | _|  ¡ r5d | jdd… ¡| _	|  jt| jƒ7  _d S d S )Nr   r   r   r„   r[   )
Ú_variable_charsr=   Újoinr?   r4   r   rA   Ú _has_list_or_dict_variable_indexÚ#_list_and_dict_variable_index_charsr!   r|   r   r   r   rð   Ç  s   þzVariableSplitter._finalizec                 C   s   | j o	| j d dkS )Nr„   r<   )rö   r|   r   r   r   rõ   Ï  s   ÿz1VariableSplitter._has_list_or_dict_variable_indexc              	   C   s¨   |   |¡\}}|| _d| _| j| _|| dg| _g | _|| _|d7 }t||d … ƒD ]'\}}||7 }z|  ||¡ W n t	yE   Y  d S w ||krQ|  
¡ sQ d S q*d S )Nr[   r9   r   )Ú_find_variabler4   Ú_open_curlyÚ_variable_stateÚ_stateró   rö   Ú_stringr^   ÚStopIterationÚ_scanning_list_variable_index)r   r	   Ústart_indexÚ	max_indexr!   r   r   r   r   rî   Ó  s&   ÿ€ùzVariableSplitter._splitc                 C   s   | j | j| jfv S rj   )rú   Ú"_waiting_list_variable_index_stateÚ_list_variable_index_stater|   r   r   r   rý   å  s   ÿz.VariableSplitter._scanning_list_variable_indexc                 C   s^   |  d¡}|dkrtdƒ‚|  ||¡r|  |d |… ¡S |  |d|¡}|dkr+tdƒ‚||fS )Nr:   r„   zNo variable end foundr[   zNo variable start found)Úrfindrï   Ú_is_escapedr÷   Ú_find_start_index)r   r	   Ú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 )Nr9   r[   r   r„   r   )ÚfindÚ_start_index_is_okr  )r   r	   r4   rA   r!   r   r   r   r  ô  s   z"VariableSplitter._find_start_indexc                 C   s   || | j v o|  ||¡ S rj   )rì   r  )r   r	   r!   r   r   r   r  ü  s   ÿz#VariableSplitter._start_index_is_okc                 C   sF   d}|dkr!||d  dkr!|d8 }| }|dkr!||d  dks|S )NFr   r[   rÔ   r   )r   r	   r!   Úescapedr   r   r   r     s   þzVariableSplitter._is_escapedc                 C   sp   | j  |¡ |dkr+|  | j|¡s+|  jd8  _| jdkr)|  ¡ s#t‚| j| _d S d S || j	v r6| j
| _d S d S )Nr:   r[   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ó   r|   r   r   r   r	    s   z*VariableSplitter._is_list_or_dict_variablec                 C   sD   | j | _|dkr| j |¡ |  jd7  _d| _d S |   ||¡ d S )Nr9   r[   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 )Nr;   )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 )Nr<   )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   r3   ±  s     	r3   )r   )5r)   rx   Úpygments.lexerr   Úpygments.tokenr   Ú__all__ÚGenericÚHeadingrl   ÚKeywordÚ	Namespacerª   ÚNamer¬   Ú
SubheadingrÝ   ÚFunctionr¼   ÚStringr«   r¸   r@   r‰   r5   ÚPunctuationrk   r>   ÚEmphr¿   ÚErrorr6   r   r   r   r   rS   rz   r‹   r§   r­   rµ   r¤   r»   rÁ   rÂ   rÇ   rQ   rX   rV   rU   rY   r3   r   r   r   r   Ú<module>   sP    
/	3
