B
    `G                 @   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-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer)TokenRobotFrameworkLexer c             C   s2   |   } x$|d D ]}|| kr| |d} qW | S )N r   )lowerreplace)stringremovechar r   f/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/pygments/lexers/robotframework.py	normalize/   s
    r   c               @   s6   e Zd ZdZdZdgZdgZdgZdd Zdd	 Z	d
S )r   z
    For `Robot Framework <http://robotframework.org>`_ test data.

    Supports both space and pipe separated plain text formats.

    .. versionadded:: 1.6
    ZRobotFrameworkZrobotframeworkz*.robotztext/x-robotframeworkc             K   s"   d|d< d|d< t j| f| d S )N   tabsizezUTF-8encoding)r   __init__)selfoptionsr   r   r   r   D   s    zRobotFrameworkLexer.__init__c             c   sx   t  }t }d}xb| D ]V}xP||D ]B\}}x8|||D ](\}}|r@||t|fV  |t|7 }q@W q*W qW 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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   s^   t |dd}|jdk s"|ttfkr0||fV  d S x(| |||D ]\}}|r@||fV  q@W 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rtdtfV  | |jtE d H  dtfV  | ||jd  |E d H  d S )N{}[])r+   
identifierSYNTAXr   baseVARIABLEr   end)r   r/   r	   Z
orig_tokenbeforer   r   r   r.   `   s    



zVariableTokenizer._tokenizeN)r!   r"   r#   r   r.   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   r>   r:   r<   rA   r   r   r   r   o   s    
zRowTokenizer.__init__c             c   s   d}d}xxt | j|D ]d\}}t|d d\}}|drDd}n"|dkrf|drf| || _d}| |||||E d H  qW | j  d S )NF   r   #Tr   *)		enumeraterF   splitdivmod
startswith_start_tablerD   r.   end_row)r   r   	commentedheadingr   r   	separatorr   r   r   r   ~   s    

zRowTokenizer.tokenizec             C   s   t |dd}| j|t S )NrO   )r
   )r   rL   getrC   )r   headerr%   r   r   r   rT      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)r,   	SEPARATORHEADINGrD   r   )r   r   r   rV   rX   rW   r   r   r   r.      s    zRowTokenizer._tokenizeN)r!   r"   r#   r   r   rT   r.   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 )
rE   z( {2,})z((?:^| +)\|(?: +|$))c             c   s.   | dr| jp| j}||E d H  dV  d S )Nz| 
)rS   _split_from_pipes_split_from_spaces)r   r   Zsplitterr   r   r   rQ      s    zRowSplitter.splitc             c   s   dV  | j |E d H  d S )Nr   )_space_splitterrQ   )r   r   r   r   r   r_      s    zRowSplitter._split_from_spacesc             c   sV   | j |d\}}}|V  x0| j |rJ| j |d\}}}|V  |V  qW |V  d S )NrM   )_pipe_splitterrQ   search)r   r   _rX   restcellr   r   r   r^      s    
zRowSplitter._split_from_pipesN)
r!   r"   r#   recompiler`   ra   rQ   r_   r^   r   r   r   r   rE      s
   

rE   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 )Nr   )_index)r   r   r   r   r      s    zTokenizer.__init__c             C   s8   |  || j}|  jd7  _t|ttr4||fg}|S )NrM   )r.   ri   
isinstancetyper   )r   r   Zvalues_and_tokensr   r   r   r      s
    
zTokenizer.tokenizec             C   s   t |t| jd }| j| S )NrM   )minr   _tokens)r   r   r   r   r   r   r.      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*   r+   r8   r   )r   r   r/   r   r   r   
_is_assign   s    
zTokenizer._is_assign)r!   r"   r#   rm   r   r   r.   rr   r   r   r   r   rh      s
   rh   c               @   s   e Zd ZefZdS )CommentN)r!   r"   r#   r,   rm   r   r   r   r   rs      s   rs   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resourcer<   )documentationr;   Z	forcetagsZdefaulttagsZtesttimeoutZtasktimeoutNc             C   s   t |  || _d S )N)rh   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kr@tdd| _qv|| jkrTt | _qv|| jkrvtS n| jrv| j	|S t
| ||S )NrM   r   F)support_assign)rx   r   _keyword_settingsKeywordCall_custom_tokenizer_import_settingsImportSetting_other_settingsr-   r   rh   r.   )r   r   r   
normalizedr   r   r   r.      s    




zSetting._tokenize)N)r!   r"   r#   SETTINGARGUMENTrm   r{   r~   r   r}   r   r.   r   r   r   r   rt      s   
rt   c               @   s   e Zd ZeefZdS )r   N)r!   r"   r#   IMPORTr   rm   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   )rw   tagstimeoutc             C   sJ   |dkr<t | |dd |}dtf|dd |fdtfgS t | ||S )Nr   rM   ro   r2   r3   )rt   r.   r5   )r   r   r   rk   r   r   r   r.      s    zTestCaseSetting._tokenizeN)r!   r"   r#   r{   r~   r   r.   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdZdS )KeywordSetting)r   )rw   	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 )Nr   )rr   r-   rh   r.   )r   r   r   r   r   r   r.     s    zVariable._tokenizeN)r!   r"   r#   r5   r   rm   r.   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 )Nr   )rh   r   _keyword_found_assigns)r   rz   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 )NrM   T)	r   rr   r   r5   rh   r.   GherkinTokenizerr   KEYWORD)r   r   r   r   r   r   r.     s    zKeywordCall._tokenizeN)T)r!   r"   r#   r   r   rm   r   r.   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) c             C   sB   | j |}|s||fgS | }|d | tf||d  |fgS )N)_gherkin_prefixmatchr8   GHERKIN)r   r   r   r   r8   r   r   r   r   "  s
    
zGherkinTokenizer.tokenizeN)r!   r"   r#   rf   rg   
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   rm   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)rh   r   _in_arguments)r   r   r   r   r   0  s    
zForLoop.__init__c             C   s$   | j r
tpt}| dkr d| _ |S )N)INzIN RANGET)r   r   r5   upper)r   r   r   r   r   r   r   r.   4  s    zForLoop._tokenizeN)r!   r"   r#   r   r.   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 )N)_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 )N)
_continuesr   r   r5   r.   r   append)r   r   r   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 )N)	_is_empty).0t)r   r   r   	<genexpr>L  s   z$_Table._continues.<locals>.<genexpr>)allr   )r   r   r   r   )r   r   r   K  s    z_Table._continuesc             C   s   |dkS )N)r   \r   )r   r   r   r   r   r   O  s    z_Table._is_emptyc             C   s   | j |S )N)r   r   )r   r   r   r   r   r   r.   R  s    z_Table._tokenizec             C   s   | j | jd d S )N)r   )r   r   )r   r   r   r   rU   U  s    z_Table.end_row)N)
r!   r"   r#   r   r   r   r   r   r.   rU   r   r   r   r   r   ;  s   
r   c               @   s   e Zd ZeZdd ZdS )rC   c             C   s   dS )NFr   )r   r   r   r   r   r   r   \  s    zUnknownTable._continuesN)r!   r"   r#   rs   r   r   r   r   r   r   rC   Y  s   rC   c               @   s   e Zd ZeZdS )rJ   N)r!   r"   r#   r   r   r   r   r   r   rJ   `  s   rJ   c               @   s*   e Zd ZeZdddZdd Zdd ZdS )	rH   Nc             C   s   t | | || _d S )N)r   r   rx   )r   ry   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   ru   )r   rt   rx   r   r   r.   )r   r   r   r   r   r   r.   k  s    zSettingTable._tokenizec             C   s   | j | j| jd d S )N)r   )r   rx   r   )r   r   r   r   rU   p  s    zSettingTable.end_row)N)r!   r"   r#   rt   r   r   r.   rU   r   r   r   r   rH   d  s   
rH   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 )rG   Nc             C   s   | j s| jr| j dk	rtS tS )NF)_test_template_default_templater   r|   )r   r   r   r   r   y  s    
zTestCaseTable._tokenizer_classc             C   s   |dkot | ||S )Nr   )r   r   )r   r   r   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   rM   F)r   r   r   
TC_KW_NAME_is_setting_is_template_setting_classset_test_templater   _is_for_loopr   r   r5   r   r.   )r   r   r   r   r   r   r.     s    


zTestCaseTable._tokenizec             C   s   | do|dS )Nr2   r3   )rS   rp   )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     s    zTestCaseTable._is_templatec             C   s   | dot|dddkS )N:)r
   for)rS   r   )r   r   r   r   r   r     s    zTestCaseTable._is_for_loopc             C   s   |  || _d S )N)_is_template_setr   )r   r   r   r   r   r     s    zTestCaseTable.set_test_templatec             C   s   |  || _d S )N)r   r   )r   r   r   r   r   rI     s    z"TestCaseTable.set_default_templatec             C   s   t |dkS )N)r   r   nonez${empty})r   )r   r   r   r   r   r     s    zTestCaseTable._is_template_set)r!   r"   r#   r   r   r   r   propertyr   r   r.   r   r   r   r   rI   r   r   r   r   r   rG   t  s   rG   c               @   s   e Zd ZeZeZdd ZdS )rK   c             C   s   dS )NFr   )r   r   r   r   r   r     s    zKeywordTable._is_templateN)r!   r"   r#   r|   r   r   r   r   r   r   r   r   rK     s   rK   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   sZ   d | _ d | _d | _d| _d| _|| _d| _y| | W n tk
rL   Y n
X | 	  d S )Nro   F)
r4   r6   r   r+   r8   _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 )N)r   Zreplace_stringr6   )r   r<   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   ro   rM   )
_variable_charsr4   joinr6   r+   r   r8    _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 )Nro   r3   )r   )r   r   r   r   r     s    z1VariableSplitter._has_list_or_dict_variable_indexc          	   C   s   |  |\}}|| _d| _| j| _|| dg| _g | _|| _|d7 }x^t||d  D ]J\}}||7 }y| || W n t	k
r   d S X ||krV| 
 sVd S qVW d S )NrM   r0   r   )_find_variabler+   _open_curly_variable_state_stater   r   _stringrP   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gkS )N)r   "_waiting_list_variable_index_state_list_variable_index_state)r   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 )Nr1   ro   zNo variable end foundrM   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 )Nr0   rM   r   ro   r   )find_start_index_is_okr   )r   r	   r+   r8   r   r   r   r   r     s    z"VariableSplitter._find_start_indexc             C   s   || | j ko| || S )N)r   r   )r   r	   r   r   r   r   r     s    z#VariableSplitter._start_index_is_okc             C   s4   d}x*|dkr.||d  dkr.|d8 }| }qW |S )NFr   rM   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	krb| j
| _d S )Nr1   rM   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kS )Nr   )@&)r   )r   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 )Nr0   rM   T)r   r   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 )Nr2   )r   r   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 )Nr3   )r   r   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$   rf   Zpygments.lexerr   Zpygments.tokenr   __all__GenericZHeadingr\   Keyword	Namespacer   Namer   Z
Subheadingr   ZFunctionr   Stringr   r   r7   rs   r,   ZPunctuationr[   r5   ZEmphr   Errorr-   r   r   r   r   rE   rh   rt   r   r   r   r|   r   r   r   r   rC   rJ   rH   rG   rK   r*   r   r   r   r   <module>	   sN   
/	3
