o aG@sdZddlZddlmZddlmZdgZejjZ ej j Z ej j ZejjZej jZejZej jZejZejZejZejjZejZd4ddZ Gd ddeZ!Gd d d Z"Gd d d Z#GdddZ$GdddZ%Gddde%ZGddde%Z&Gddde%Z'Gddde&Z(Gddde(Z)Gddde%ZGddde%Z*Gd d!d!Z+Gd"d#d#e%Z,Gd$d%d%e%Z-Gd&d'd'Z.Gd(d)d)e.Z/Gd*d+d+e.Z0Gd,d-d-e.Z1Gd.d/d/e.Z2Gd0d1d1e2Z3Gd2d3d3Z4dS)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)TokenRobotFrameworkLexercCs.|}|dD] }||vr||d}q|S)N r)lowerreplace)stringremovecharr @/usr/lib/python3/dist-packages/pygments/lexers/robotframework.py normalize/s   rc@s6eZdZdZdZdgZdgZdgZddZdd Z d S) rz For `Robot Framework `_ test data. Supports both space and pipe separated plain text formats. .. versionadded:: 1.6 RobotFrameworkrobotframeworkz*.robotztext/x-robotframeworkcKs&d|d<d|d<tj|fi|dS)NtabsizezUTF-8encoding)r__init__)selfoptionsr r r rDszRobotFrameworkLexer.__init__ccsnt}t}d}|D]'}||D]\}}|||D]\}}|r2||t|fV|t|7}qqq dSNr) RowTokenizerVariableTokenizer splitlinestokenizestrlen)rtext row_tokenizer var_tokenizerindexrowvaluetokenr r r get_tokens_unprocessedIs  z*RobotFrameworkLexer.get_tokens_unprocessedN) __name__ __module__ __qualname____doc__namealiases filenames mimetypesrr%r r r r r7s c@eZdZddZddZdS)rccs\t|dd}|jdks|ttfvr||fVdS||||D] \}}|r+||fVq dS)Nz$@%& identifiersr)VariableSplitterstartCOMMENTERROR _tokenize)rr r$varr#r r r rWs   zVariableTokenizer.tokenizeccs|d|j}||fV|jdtfV||jtEdHdtfV|jdur=dtfV||jtEdHdtfV|||jd|EdHdS)N{}[])r2 identifierSYNTAXrbaseVARIABLEr!end)rr6r orig_tokenbeforer r r r5`s      zVariableTokenizer._tokenizeN)r&r'r(rr5r r r r rUs rc@s,eZdZddZddZddZddZd S) rcCsRt|_t|_t}t|j}t}t}|||||||||||||d |_ dS)N) settingssettingmetadata variablesvariable testcasestestcasetaskstaskkeywordskeyword userkeywords userkeyword) UnknownTable_table RowSplitter _splitter TestCaseTable SettingTableset_default_template VariableTable KeywordTable_tables)rrGrBrErKr r r ros  zRowTokenizer.__init__ccsd}d}t|j|D]2\}}t|dd\}}|dr"d}n|dkr3|dr3|||_d}||||||EdHq |jdS)NFr#Tr*) enumeraterRsplitdivmod startswith _start_tablerPr5end_row)rr" commentedheadingr!r# separatorr r r r~s    zRowTokenizer.tokenizecCst|dd}|j|tS)Nr[r )rrXgetrO)rheaderr*r r r r`s zRowTokenizer._start_tableccsP|r |tfVdS|r|tfVdS|r|tfVdS|j||EdHdSN)r3 SEPARATORHEADINGrPr)rr#r!rbrdrcr r r r5szRowTokenizer._tokenizeN)r&r'r(rrr`r5r r r r rms  rc@s8eZdZedZedZddZddZddZ d S) rQz( {2,})z((?:^| +)\|(?: +|$))ccs0|dr |jp |j}||EdHdVdS)Nz|  )r__split_from_pipes_split_from_spaces)rr"splitterr r r r]s  zRowSplitter.splitccsdV|j|EdHdS)Nr)_space_splitterr])rr"r r r rmszRowSplitter._split_from_spacesccs^|j|d\}}}|V|j|r*|j|d\}}}|V|V|j|s|VdSNrY)_pipe_splitterr]search)rr"_rdrestcellr r r rls  zRowSplitter._split_from_pipesN) r&r'r(recompilerorqr]rmrlr r r r rQs    rQc@s0eZdZdZddZddZddZdd ZdS) TokenizerNcCs d|_dSr)_indexrr r r rs zTokenizer.__init__cCs8|||j}|jd7_t|ttr||fg}|Srp)r5ry isinstancetyper)rr#values_and_tokensr r r rs  zTokenizer.tokenizecCst|t|jd}|j|Srp)minr_tokensrr#r!r r r r5s zTokenizer._tokenizecCs>|dr |dd}t|dd}|jdko|jt|kS)N=z$@&r/r)endswithstripr1r2r?r)rr#r6r r r _is_assigns  zTokenizer._is_assign)r&r'r(rrrr5rr r r r rxs  rxc@eZdZefZdS)CommentN)r&r'r(r3rr r r r r rc@s6eZdZeefZdZdZdZdZ d ddZ ddZ dS) Setting) suitesetupsuiteprecondition suiteteardownsuitepostcondition testsetup tasksetuptestprecondition testteardown taskteardowntestpostcondition testtemplate tasktemplate)libraryresourcerE) documentationrD forcetags defaulttags testtimeout tasktimeoutNcCst|||_dSrh)rxr_template_setter)rtemplate_setterr r r r  zSetting.__init__cCs|dkr |jr |||dkr2t|}||jvr tdd|_n||jvr*t|_n||jvr1tSn |jr;|j |St |||S)NrYrF)support_assign) rr_keyword_settings KeywordCall_custom_tokenizer_import_settings ImportSetting_other_settingsr4rrxr5)rr#r! normalizedr r r r5s      zSetting._tokenizerh) r&r'r(SETTINGARGUMENTrrrrrrr5r r r r rs  rc@seZdZeefZdS)rN)r&r'r(IMPORTrrr r r r rs rc@s eZdZdZdZdZddZdS)TestCaseSetting)setup preconditionteardown postconditiontemplater )rtagstimeoutcCsJ|dkrt||dd|}dtf|dd|fdtfgSt|||S)NrrYrr9r:)rr5r<)rr#r!r|r r r r5szTestCaseSetting._tokenizeN)r&r'r(rrrr5r r r r rs  rc@seZdZdZdZdS)KeywordSetting)r)r argumentsreturnrrN)r&r'r(rrr r r r rsrc@seZdZeefZddZdS)VariablecCs$|dkr ||s tSt|||Sr)rr4rxr5rr r r r5szVariable._tokenizeN)r&r'r(r<rrr5r r r r rs rc@s&eZdZeefZdddZddZdS)rTcCst|| |_d|_dSr)rxr_keyword_found_assigns)rrr r r rs  zKeywordCall.__init__cCsP|js||r|jd7_tS|jrt||||jSd|_t|tS)NrYT) rrrr<rxr5GherkinTokenizerrKEYWORDrr r r r5szKeywordCall._tokenizeN)T)r&r'r(rrrrr5r r r r r s  rc@s"eZdZedejZddZdS)rz^(Given|When|Then|And) cCsB|j|}|s ||fgS|}|d|tf||d|fgSrh)_gherkin_prefixmatchr?GHERKIN)rr#r$rr?r r r r"s   zGherkinTokenizer.tokenizeN)r&r'r(rvrw IGNORECASErrr r r r rs rc@r)TemplatedKeywordCallN)r&r'r(rrr r r r r*rrc@r.)ForLoopcCst|d|_dSNF)rxr _in_argumentsrzr r r r0rzForLoop.__init__cCs$|jrtpt}|dvrd|_|S)N)INzIN RANGET)rrr<upper)rr#r!r$r r r r54s zForLoop._tokenizeN)r&r'r(rr5r r r r r.s rc@sBeZdZdZdddZddZddZdd Zd d Zd d Z dS)_TableNcCs||_||_g|_dSrh)_tokenizer_class _tokenizer_prev_tokenizer_prev_values_on_row)rprev_tokenizerr r r r>s  z_Table.__init__ccsD|||r|j|_|tfVn |||EdH|j|dSrh) _continuesrrr<r5rappendrr r r rCs   z_Table.tokenizecs |dkotfddjDS)Nz...c3s|]}|VqdSrh) _is_empty).0trzr r Lsz$_Table._continues..)allrrr rzr rKsz_Table._continuescCs|dvS)N)r\r rr#r r r rOsz_Table._is_emptycCs |j|Srh)rrrr r r r5R z_Table._tokenizecCs|j|jddSN)r)rrrzr r r raUsz_Table.end_rowrh) r&r'r(rrrrrr5rar r r r r;s  rc@seZdZeZddZdS)rOcCdSrr rr r r r\zUnknownTable._continuesN)r&r'r(rrrr r r r rOYs rOc@seZdZeZdS)rVN)r&r'r(rrr r r r rV`srVc@s*eZdZeZdddZddZddZdS) rTNcCst||||_dSrh)rrr)rrrr r r rgs  zSettingTable.__init__cCs.|dkrt|dkrt|j|_t|||S)Nrr)rrrrrr5rr r r r5ks zSettingTable._tokenizecCs|j|j|jddSr)rrrrzr r r rapzSettingTable.end_rowrh)r&r'r(rrrr5rar r r r rTds   rTc@sdeZdZeZdZdZeddZddZ ddZ dd Z d d Z d d Z ddZddZddZdS)rSNcCs|js |jr |jdur tStSr)_test_template_default_templaterrrzr r r rys  zTestCaseTable._tokenizer_classcCs|dko t|||Sr)rrrr r r rrzTestCaseTable._continuescCs|dkr|r d|_t|tS|dkr.||r.||r)d|_||j|_n||_|dkr;| |r;t |_|dkrI| |rI|t fgSt |||S)NrrYF)rrr TC_KW_NAME _is_setting _is_template_setting_classset_test_templater _is_for_looprrr<rr5rr r r r5s   zTestCaseTable._tokenizecCs|do |dS)Nr9r:)r_rrr r r rszTestCaseTable._is_settingcCs t|dkS)Nz [template]rrr r r rrzTestCaseTable._is_templatecCs|do t|dddkS)N:refor)r_rrr r r rszTestCaseTable._is_for_loopcC|||_dSrh)_is_template_setrrrr r r rzTestCaseTable.set_test_templatecCrrh)rrrr r r rUrz"TestCaseTable.set_default_templatecCs t|dvS)N)rrnonez${empty}rrr r r rrzTestCaseTable._is_template_set)r&r'r(rrrrpropertyrrr5rrrrrUrr r r r rSts  rSc@seZdZeZeZddZdS)rWcCrrr rr r r rrzKeywordTable._is_templateN)r&r'r(rrrrrr r r r rWs rWc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdS) r1cCsZd|_d|_d|_d|_d|_||_d|_z||Wn ty&YdSw| dS)NrF) r;r=r!r2r? _identifiers_may_have_internal_variables_split ValueError _finalize)rr r0r r r rs  zVariableSplitter.__init__cCs|jr ||jS|jSrh)rreplace_stringr=)rrEr r r get_replaced_bases z"VariableSplitter.get_replaced_basecCsn|jd|_d|jdd|_|jt|j|_|r5d|jdd|_ |jt|j7_dSdS)NrrrrrY) _variable_charsr;joinr=r2rr? _has_list_or_dict_variable_index#_list_and_dict_variable_index_charsr!rzr r r rs zVariableSplitter._finalizecCs|jo |jddkS)Nrr:)rrzr r r rs z1VariableSplitter._has_list_or_dict_variable_indexc Cs||\}}||_d|_|j|_||dg|_g|_||_|d7}t||dD]'\}}||7}z|||Wn t yEYdSw||krQ| sQdSq*dS)NrYr7r) _find_variabler2 _open_curly_variable_state_staterr_stringr\ StopIteration_scanning_list_variable_index)rr start_index max_indexr!r r r r rs& zVariableSplitter._splitcCs|j|j|jfvSrh)r"_waiting_list_variable_index_state_list_variable_index_staterzr r r rsz.VariableSplitter._scanning_list_variable_indexcCs^|d}|dkr td|||r||d|S||d|}|dkr+td||fS)Nr8rzNo variable end foundrYzNo variable start found)rfindr _is_escapedr_find_start_index)rr max_end_indexrr r r rs  zVariableSplitter._find_variablecCs@|d||d}|dkrdS|||r|S|||d|S)Nr7rYrrr)find_start_index_is_okr)rr r2r?r!r r r rs  z"VariableSplitter._find_start_indexcCs|||jvo ||| Srh)rr)rr r!r r r rs z#VariableSplitter._start_index_is_okcCsFd}|dkr!||ddkr!|d8}| }|dkr!||ddks|S)NFrrYrr )rr r!escapedr r r rs zVariableSplitter._is_escapedcCsp|j||dkr+||j|s+|jd8_|jdkr)|s#t|j|_dSdS||j vr6|j |_dSdS)Nr8rYr) rrrrr_is_list_or_dict_variablerrrr_internal_variable_start_staterr r!r r r rs     z VariableSplitter._variable_statecCs|jddvS)Nr)@&)rrzr r r rsz*VariableSplitter._is_list_or_dict_variablecCsD|j|_|dkr|j||jd7_d|_dS|||dS)Nr7rYT)rrrrrrr r r r rs   z/VariableSplitter._internal_variable_start_statecCs$|dkrt|j||j|_dS)Nr9)rrrrrr r r r rs  z3VariableSplitter._waiting_list_variable_index_statecCs|j||dkr tdS)Nr:)rrrr r r r r$s z+VariableSplitter._list_variable_index_stateN)r&r'r(rrrrrrrrrrrrrrrr r r r r1s    r1)r)5r)rvpygments.lexerrpygments.tokenr__all__GenericHeadingrjKeyword NamespacerNamer SubheadingrFunctionrStringrrr>rr3 Punctuationrir<EmphrErrorr4rrrrrQrxrrrrrrrrrrOrVrTrSrWr1r r r r sP   /    3