Ñò PhEc @sddkZddkZddkZddkZddklZddkThdd6dd6dd6d d 6d d 6d d 6d d6d d6dd6d d6dd6d d6d d6dd6dd6dd6Zhdd6dd6dd6dd6dd6d d 6Zdd!d „ƒYZ dS("iÿÿÿÿN(t exception(t*tvariable_list_blocktargstkey_value_blocktattrtflagst raw_blocktcleanupt doc_blocktdoctfiltertinittonces synonym:oncetglobalt threadoncessynonym:threadoncet threadlocaltpythontsharedssynonym:sharedt requestlocalt requestoncet text_blockttextt componenttrequesttthreadtLexercBseZd„Zd„Zd„Zddd„ƒYZdd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zed„Zd„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cKs d|_dS(N(tNonetcurrent(tselftparams((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyt__init__6scCsdS(s*returns an ID that can identify this lexers Myghty.Lexer((R((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyt get_object_id9scKs t|S(s{creates a clone of this Lexer. allow the Prototype pattern to be used in creating lexers for use in other threads.(R(RR((s0/usr/lib/python2.6/site-packages/myghty/lexer.pytclone>st LexContextcBs;eZdZd„Zd„Zd„Zdddd„ZRS(sBan object tracking the lexer's progress through a component block.cCsm||_||_||_tidtiƒ|_d|_t|_ t|_ d|_ d|_ d|_dS(Ns\Zi(tsourcetnametcompilertretcompiletStendingtmatch_positiontFalsetin_deft in_methodRt block_namet block_typetlines(RR#R$R%((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyREs        cCse|djo t|_n6|djo t|_n|djon d|‚||_||_dS(Ntdeftmethodtclosuresinvalid block type %s(tTrueR,R-R.R/(RR/R$((s0/usr/lib/python2.6/site-packages/myghty/lexer.pytset_in_named_block[s       cCst|_t|_d|_dS(N(R+R,R-RR.(R((s0/usr/lib/python2.6/site-packages/myghty/lexer.pytreset_in_named_blockhs  cCs|djo0|oti||ƒ}q=ti|ƒ}n|i|i|iƒ}|o=|iƒ\}}||jo|d|_q™||_n|S(Ni(RR&R'tmatchR#R*tspan(Rt regstringRtregexpR7tstarttend((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyt match_posns   N(t__name__t __module__t__doc__RR5R6RR=(((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyR"Cs   c Cs×ti|||ƒ}||_||_tidd|iƒ|_|iiti ƒo0|it ti ƒ|_|ii i dƒnz:y|i i ƒ|iƒWntj o }‚nXWd|i iƒXdS(Ns\r\n?s tutf_8(RR"Rt input_fileR&tsubR#t startswithtcodecstBOM_UTF8tlenR%tmagic_encoding_commenttstart_componentR;t Exceptiont end_component(RR#R$R%RBRte((s0/usr/lib/python2.6/site-packages/myghty/lexer.pytlexˆs    cCsìd}t|iiƒ}xQtoI|ii|joPn|iƒ}|oPn|iƒoqn|iƒoqn|i ƒoqn|i ƒoqn|i ƒoqn|i ƒoqn|i ƒoqn|iƒoqn|iit|iiƒj}|iip |iio"|o|id|iiƒn|oPntidƒ‚qW|iip |iiob|ii}t|tƒ p|iii|ƒ o*|ii}|id|||fƒqèndS(NsMissing closing tags.Infinite parsing loop encountered - Lexer bug?s*no closing tag for <%%%s %s> block(RRGRR#R4R*t match_endt match_blocktmatch_named_blocktmatch_substitutetmatch_comp_calltmatch_python_linetmatch_comp_content_calltmatch_comp_content_call_endt match_textR,R-traise_syntax_errorR/RtCompilert isinstancetstrR)R7R.(RR<tlengthtisendttypeR.((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyR;ªsH         ! ( cCsr|iidtidtitiƒdƒdtiti Bƒƒ}|o|i dƒi ƒ|i dƒ}}||i_ h}|o‡ti d|ƒ}xr|D]f}|\}}} yt| ƒ||]*)?\s*>iis,\s*((\w+)\s*=\s*('[^']*'|\"[^\"]*\"|\w+))\s*is,Non-evaluable attribute value: '%s' (%s: %s)t:iÿÿÿÿsno such block type '%s'tscopeRsunknown python scope '%s'R/t attributest synonym_for(RR=R&R'tstringtjointBLOCKStkeystIR(tgrouptlowerR/tfindalltevaltsystexc_infoRWRtfindtsplittKeyErrorthas_keyt PYTHON_SCOPESR%t start_blocktgetattrR4R+(RR7R]RRat attrmatchtatttfulltkeytvalRLtmsgtsyntypeR2((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRO×sFE% & * " c Cs…|iidtidtitiBƒƒ}|oK|idƒiƒ|idƒ|idƒ}}}h}|o@tid|ƒ}x+|D]}|\}} } | || ]*)?\s*>iiis,\s*((\w+)\s*=\s*('[^']*'|\"[^\"]*\"|\w+))\s*s%s block without a nameR/R$Ras <\/%%%s>(\n?)(RR=R&R'RgR(RhRiRjRWR%tstart_named_blockR)R5R;tend_named_blockR6R4R+( RR7R]R$RRaRuRvRwRxRytexistingending((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRP s,+5"    cCs¢|i}|idtidtitiBƒƒ}|ob|idƒ}|iid|ƒ|i |i |ƒ7_ |idƒo|i d7_ nt St SdS(NR:sé (.*?) # anything, followed by: ( (?<=\n)(?=[%#]) # an eval or comment line, preceded by a consumed \n | (?= # Closing tag iiis'<%' without matching '%>'(RR=R+R&R'R€RgR(RhR0RR%t substitutionR4RW(RR7tbodytextratescape((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRQQs  cCs±|iidtidtiƒƒ}|o~|iidtidtiƒƒ}|oB|idƒ}|iii|ƒ|ii|i |ƒ7_t S|i dƒnt SdS(NR:s<&(?!\|)s(.*?)&>is'<&' without matching '&>'( RR=R&R'R(RhR%tcomponent_callR0RR4RWR+(RR7tcall((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRRws$$cCs±|iidtidtiƒƒ}|o~|iidtidtiƒƒ}|oB|idƒ}|iii|ƒ|ii|i |ƒ7_t S|i dƒnt SdS(NR:s<&\|s(.*?)&>is'<&|' without matching '&>'( RR=R&R'R(RhR%tcomponent_content_callR0RR4RWR+(RR7R‡((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRT†s$$cCs6|iidƒ}|o|iiiƒtStSdS(Ns(RR=R%tcomponent_content_call_endR4R+(RR7((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRU•s cKs¨|o$tid|titiBƒ}n!tid|titiBƒ}|ii|ƒ}|o/|ot|iddƒƒS|idƒSn|id|ƒdS(Ns(.*?)(\n?)s\s*(\n?)iisInvalid <%%%s> section line( R&R'RgR(RR=ttupleRhRW(RR/t allow_textRtregexR7((s0/usr/lib/python2.6/site-packages/myghty/lexer.pytmatch_block_endžs$ cCsã|iidtiƒ}|o¼|idƒdjop|iidjoFtid|idƒƒ}|o |iii|idƒƒqŽn|iid7_t S|iii d|idƒƒ|iid7_t St SdS(Ns(?<=^)([%#])([^\n]*)(?:\n|\Z)it#iscoding[=:]\s*([-\w.]+)tline( RR=R&tMRhR0tsearchR%RHR4t python_lineR+(RR7tm((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRS®s$cCse|iid|iiƒ}|o;|iƒ}|ii|i|ƒ7_|o|StSntSdS(NR:(RR=R)RhR0RR4R+(RR7Rc((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRNÂs c Ks||iidtid|titiBtiBƒƒ}|o|iƒ}nd}tidtiti BtiBƒ}|i |ƒ}d}|dj o|i dƒo|d}nxm|D]e}|\} } } | o,|ii id|d| d| d|ƒn| o|iid 7_q½q½Wt|d <|id||} | o|iid 7_n|ii id|ƒdS( NR:s.*?(?= <\/%%%s> )tsÿ (?: (?: [ \t]* ( [^\W\d]\w* ) #only allows valid Python variable names [ \t]* (?: (?: # begin optional part of arg = ( [^\n]+ ) # default value, also consumes an inline comment, if any ) | (?: # an optional comment after an arg without a default [ \t]* \# [^\n]* ) )? ) | [ \t]* # a comment line \# [^\n]* | [ \t]* # just space ) (\n?) # optional newline. the ? makes finditer() go into an endless loop. R`R/R$tdefaultiR‹(RR=R&R'RR(R€RhtVERBOSERgRjRRqR%tvariable_declarationR0R+Rt end_block( RR/RaRR7R#R:tmatchesR`R$R•tlinebrtnl((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRÐs2 6"  c Ks>|iidtid|titiBtiBƒƒ}|o|iƒ}nd}tidtiti Bƒ}|i |ƒ}xg|D]_}|\}}} |o&|ii i d|d|d|ƒn| o|ii d7_ q…q…Wt|d <|id||} | o|ii d7_ n|ii id|ƒdS( NR:s.*?(?= <\/%%%s> )R”sç (?: [ \t]* ([\w_]+) # identifier [ \t]*[=:][ \t]* # separator (\S[^\n]*) # value ( must start with a non-space char) | [ \t]* # an optional comment \# [^\n]* | [ \t]* # just space ) (\n?) R/RxtvalueiR‹(RR=R&R'RR(R€RhR–RgRjR%tkey_value_pairR0R+RR˜( RR/RR7R#R:R™RxRœtnewlineR›((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyR&s(6 cKsÌt|d<|i|\}}|idƒo|ddj o|d}n |d}t|ii|ƒd|d|ƒ|ii|i|ƒ7_|o|iid7_n|iii d|ƒdS(NR‹RbR/Ri( R4RRqRRtRR%R0RR˜(RR2RRtn1tcompiler_block_type((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyt generic_blockTs ! "cKs|id|dS(NR(R¡(RR((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRfscKs|id|dS(NR(R¡(RR((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRiscKs|id|dS(NR (R¡(RR((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyR lscCs|iidS(Ni(RR0(R((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyt line_numberpscCs |iiS(N(RR$(R((s0/usr/lib/python2.6/site-packages/myghty/lexer.pytget_namesscCsttid|ƒƒS(Ns\n(RGR&Rj(RR((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRwscCsUtid|iid|ii!ƒ}t|ƒ|iijodS||iiSdS(Ns\niR”(R&RoRR#R*RGR0(RR0((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyt _current_line{s%cCsatid|d|iƒd|iƒd|iƒd|iid|id|iii ƒƒ‚dS(Nterrort comp_namet source_lineR¢R#tfiletsource_encoding( RtSyntaxR£R¤R¢RR#RBR%t get_encoding(RR¥((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyRW„s      (N(R>R?RR R!R"RRMR;RORPRVRQRRRTRUR4RRSRNRRR¡RRR R¢R£RR¤RW(((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyR4s6   E " - 3 )  &      V .        (( RcR&RlREtmyghtyRt myghty.utilReRrR(((s0/usr/lib/python2.6/site-packages/myghty/lexer.pyt s60