ó
    ùÞ j©A  ã                   óT   • S r SSKrSSKrSSKJr  SSKJr  SSKJr  0 r " S S5      r	g)zGprovides the Lexer class for parsing template strings into parse trees.é    N)Ú
exceptions)Ú	parsetree)Úadjust_whitespacec                   ó²   • \ rS rSr SS jr\S 5       rSS jrS rS r	S r
\R                  " S	5      rS
 rS rS rS rS rS rS rS rS rS rS rSrg)ÚLexeré   Nc                 ó*  • Xl         X l        [        R                  " U R                  5      U l        SU l        SU l        SU l        SU l        / U l	        / U l
        / U l        X0l        Uc  / U l        g [        US5      (       d	  U/U l        g X@l        g )Né   r   Ú__iter__)ÚtextÚfilenamer   ÚTemplateNodeÚtemplateÚmatched_linenoÚmatched_charposÚlinenoÚmatch_positionÚtagÚcontrol_lineÚternary_stackÚencodingÚpreprocessorÚhasattr)Úselfr   r   Úinput_encodingr   s        ÚD/var/www/html/gaurav/venv/lib/python3.13/site-packages/mako/lexer.pyÚ__init__ÚLexer.__init__   sŠ   € ð Œ	Ø ŒÜ!×.Ò.¨t¯}©}Ó=ˆŒØˆÔØ ˆÔØˆŒØˆÔØˆŒØˆÔØˆÔØ&ŒàÑØ "ˆDÕÜ˜ z×2Ñ2Ø!- ˆDÕà ,Õó    c                 ó`   • U R                   U R                  U R                  U R                  S.$ )N)Úsourcer   Úposr   )r   r   r   r   )r   s    r   Úexception_kwargsÚLexer.exception_kwargs*   s.   € ð —i‘iØ×)Ñ)Ø×'Ñ'ØŸ™ñ	
ð 	
r   c                 óÔ   •  [         X4   nU R	                  U5      $ ! [         a@    U(       a  [        R                  " X5      O[        R                  " U5      nU[         X4'    NZf = f)z>compile the given regexp, cache the reg, and call match_reg().)Ú_regexp_cacheÚKeyErrorÚreÚcompileÚ	match_reg)r   ÚregexpÚflagsÚregs       r   ÚmatchÚLexer.match3   s\   € ð	1Ü  Ñ0ˆCð
 �~‰~˜cÓ"Ð"øô	 ó 	1Þ/4”"—*’*˜VÔ+¼"¿*º*ÀVÓ:LˆCØ-0ŒM˜6˜/Ó*ð	1ús   ‚
 �AA'Á&A'c                 óÜ  • U R                   nUR                  U R                  U R                   5      nU(       a²  UR                  5       u  pEXT:X  a  US-   OUU l         U R                  U l        US-
  nUS:¼  a0  X`R                  :  a!  U R                  SUS-    R                  S5      nX&-
  U l        U =R                  U R                  X R                    R                  S5      -  sl        U$ )zˆmatch the given regular expression object to the current text
position.

if a match occurs, update the current text and line position.

r
   r   NÚ
)
r   r.   r   Úspanr   r   Ú
textlengthÚrfindr   Úcount)r   r-   Úmpr.   ÚstartÚendÚcps          r   r*   ÚLexer.match_reg>   sÆ   € ð × Ñ ˆà—	‘	˜$Ÿ)™) T×%8Ñ%8Ó9ˆÞØŸ™›‰JˆEØ-0«\ #¨¢'¸sˆDÔØ"&§+¡+ˆDÔØ�a‘ˆBØ�Q‹w˜2§¡Ó/Ø—Y‘Y˜x  a¡Ð(×.Ñ.¨tÓ4�Ø#%¡7ˆDÔ Ø�KŠK˜4Ÿ9™9 R×*=Ñ*=Ð>×DÑDÀTÓJÑJ�KØˆr   c                 ód  • U R                   nU R                  nU R                  nSR                  U5      nSnSnSn	 U R	                  S5      n
U
(       a  M  U R	                  S[
        R                  5      n
U
(       a  MD  U R	                  SU-  5      n
U
(       a]  U(       a  US:”  dP  US:”  dJ  U	S:”  dD  U R                  X0R                   [        U
R                  S5      5      -
   U
R                  S5      4$ U
(       d#  U R	                  SU-  [
        R                  5      n
U
(       aÏ  XzR                  S5      R                  S5      -  nXzR                  S5      R                  S	5      -  nXŠR                  S5      R                  S
5      -  nXŠR                  S5      R                  S5      -  nXšR                  S5      R                  S5      -  n	XšR                  S5      R                  S5      -  n	GM¼  [        R                  " SSR                  U5      -  40 0 U R                  EUUS.ED6e)NÚ|r   z#.*\nz+(\"\"\"|\'\'\'|\"|\')[^\\]*?(\\.[^\\]*?)*\1z(%s)r
   z(.*?)(?=\"|\'|#|%s)Ú{Ú}Ú(Ú)Ú[Ú]z6Expected: %s; unterminated tag or expression beginningÚ,©r   r"   )r   r   r   Újoinr.   r(   ÚSr   ÚlenÚgroupr5   r   ÚSyntaxExceptionr#   )r   Úwatch_nestingr   ÚstartposÚstartlinenoÚstartcharposÚtext_reÚbrace_levelÚparen_levelÚbracket_levelr.   s              r   Úparse_until_textÚLexer.parse_until_textT   sô  € Ø×&Ñ&ˆØ×)Ñ)ˆØ×+Ñ+ˆØ—)‘)˜D“/ˆØˆØˆØˆØØ—J‘J˜xÓ(ˆEÞÙØ—J‘JØ>ÄÇÁóˆEö ÙØ—J‘J˜w¨Ñ0Ó1ˆEÞÞØ  1“_¨°a«¸=È1Ó;Lð —I‘IØ ×#6Ñ#6¼¸U¿[¹[È»^Ó9LÑ#Lðð —K‘K “Nð	ð ö ØŸ
™
Ð#9¸GÑ#CÄRÇTÁTÓJ�ÞØŸ{™{¨1›~×3Ñ3°CÓ8Ñ8�ØŸ{™{¨1›~×3Ñ3°CÓ8Ñ8�ØŸ{™{¨1›~×3Ñ3°CÓ8Ñ8�ØŸ{™{¨1›~×3Ñ3°CÓ8Ñ8�Ø§¡¨Q£×!5Ñ!5°cÓ!:Ñ:�Ø§¡¨Q£×!5Ñ!5°cÓ!:Ñ:�Úô ×,Ò,ØHØ—(‘(˜4“.ñ!ñðØ×+Ñ+ðà)Ø'òñð r   c                 ó<  • UR                  SU R                  5        UR                  SU R                  5        UR                  SU R                  5        U R                  US'   U" U0 UD6n[        U R                  5      (       a)  U R                  S   R                  R                  U5        O%U R                  R                  R                  U5        U R                  (       a¹  U R                  S   nUR                  R                  U5        [        U[        R                  5      (       a   UR                  UR                  5      (       dP  U R                   (       a?  U R                   S   (       a+  U R                   S   S   R                  R                  U5        [        U[        R"                  5      (       aJ  [        U R                  5      (       a  U R                  S   Ul        U R                  R                  U5        g [        U[        R                  5      (       Gav  UR&                  (       a5  U R                  R)                  5         U R                   R)                  5         g UR*                  (       a7  U R                  R                  U5        U R                   R                  / 5        g U R                  (       aL  U R                  S   R                  UR                  5      (       a  U R                   S   R                  U5        g U R                  (       ay  U R                  S   R                  UR                  5      (       dK  [,        R.                  " SUR                  < SU R                  S   R                  < S340 U R0                  D6eg g g )	Nr!   r   r"   r   éÿÿÿÿú	Keyword 'z#' not a legal ternary for keyword 'Ú')Ú
setdefaultr   r   r   r   rG   r   ÚnodesÚappendr   r   Ú
isinstancer   ÚControlLineÚ
is_ternaryÚkeywordr   ÚTagÚparentÚisendÚpopÚ
is_primaryr   rI   r#   )r   ÚnodeclsÚargsÚkwargsÚnodeÚcontrol_frames         r   Úappend_nodeÚLexer.append_node‡   s¥  € Ø×Ñ˜( D§I¡IÔ.Ø×Ñ˜( D×$7Ñ$7Ô8Ø×Ñ˜% ×!5Ñ!5Ô6Ø!Ÿ]™]ˆˆzÑÙ˜Ð' Ñ'ˆÜˆt�x‰x�=‰=Ø�H‰H�R‰L×Ñ×%Ñ% dÕ+à�M‰M×Ñ×&Ñ& tÔ,ð
 ××Ø ×-Ñ-¨bÑ1ˆMØ×Ñ×&Ñ& tÔ,ô ˜t¤Y×%:Ñ%:×;Ñ;Ø%×0Ñ0°·±×>Ñ>à×&×&Ø×&Ñ& r×*à×"Ñ" 2Ñ& rÑ*×0Ñ0×7Ñ7¸Ô=Ü�dœIŸM™M×*Ñ*Ü�4—8‘8�}‰}Ø"Ÿh™h r™l�”Ø�H‰H�O‰O˜DÕ!Ü˜œi×3Ñ3×4Ò4Ø�z�zØ×!Ñ!×%Ñ%Ô'Ø×"Ñ"×&Ñ&Õ(Ø——Ø×!Ñ!×(Ñ(¨Ô.Ø×"Ñ"×)Ñ)¨"Õ-Ø×"×" t×'8Ñ'8¸Ñ'<×'GÑ'GØ—‘÷(ñ (ð ×"Ñ" 2Ñ&×-Ñ-¨dÕ3Ø×"×"¨4×+<Ñ+<¸RÑ+@×+KÑ+KØ—‘÷,ñ ,ô !×0Ó0à—|”| T×%6Ñ%6°rÑ%:×%BÔ%BðDñð ×+Ñ+ñð ð,Ð"ð 5r   z #.*coding[:=]\s*([-\w.]+).*\r?\nc                 ó”  • [        U[        5      (       aJ  U R                  R                  U5      nU=(       a    UR	                  S5      =(       d    U=(       d    SnXa4$ UR                  [        R                  5      (       až  U[        [        R                  5      S nSnU R                  R                  UR                  SS5      5      nUbQ  UR	                  S5      S:w  a<  [        R                  " SUR	                  S5      -  UR                  SS5      SSU5      eONU R                  R                  UR                  SS5      5      nU(       a  UR	                  S5      O
U=(       d    SnU(       a   UR                  U5      nXq4$ Xq4$ ! [         a.    [        R                  " SU-  UR                  SS5      SSU5      ef = f)z‰given string/unicode or bytes/string, determine encoding
from magic encoding comment, return body as unicode
or raw if decode_raw=False

r
   zutf-8NÚignorezHFound utf-8 BOM in file, with conflicting magic encoding comment of '%s'r   z0Unicode decode operation of encoding '%s' failed)r[   ÚstrÚ
_coding_rer.   rH   Ú
startswithÚcodecsÚBOM_UTF8rG   Údecoder   ÚCompileExceptionÚUnicodeDecodeError)r   r   Ú
decode_rawÚknown_encodingr   Úmr   Úparsed_encodings           r   Údecode_raw_streamÚLexer.decode_raw_stream»   s‘  € ô �dœC× Ñ Ø—‘×%Ñ% dÓ+ˆAØ×'˜QŸW™W Q›Z×D¨>×D¸WˆHØ�>Ð!à�?‰?œ6Ÿ?™?×+Ñ+ØœœFŸO™OÓ,Ð.Ð/ˆDØ%ˆOØ—‘×%Ñ% d§k¡k°'¸8Ó&DÓEˆAØ‰} §¡¨£¨wÓ!6Ü ×1Ò1ð5Ø78·w±w¸q³zñBà—K‘K ¨Ó2ØØØóð øð —‘×%Ñ% d§k¡k°'¸8Ó&DÓEˆAÞ,-˜aŸg™g aœj°>×3LÀWˆOÞð
Ø—{‘{ ?Ó3�ð Ð$Ð$ˆÐ$Ð$øô &ó Ü ×1Ò1ØFØ%ñ&à—K‘K ¨Ó2ØØØóð ðús   Å8F Æ8Gc                 óV  • U R                  U R                  SU R                  U R                  5      u  U l        U l        U R                   H  nU" U R                  5      U l        M     U R                  U R                  5        [        U R                  5      U l         U R                  U R                  :”  a  OÿU R                  5       (       a  OéU R                  5       (       a  MI  U R                  5       (       a  M`  U R                  5       (       a  Mw  U R                  5       (       a  MŽ  U R                  5       (       a  M¥  U R!                  5       (       a  M¼  U R#                  5       (       a  MÓ  U R%                  5       (       a  Mê  U R                  U R                  :”  a  O[&        R(                  " S5      e[        U R*                  5      (       a;  [&        R,                  " SU R*                  S   R.                  -  40 U R0                  D6e[        U R2                  5      (       av  [&        R,                  " SU R2                  S   R.                  -  U R                  U R2                  S   R4                  U R2                  S   R6                  U R                  5      eU R8                  $ )NTzassertion failedúUnclosed tag: <%%%s>rU   z"Unterminated control keyword: '%s')ry   r   r   r   r   r*   rn   rG   r3   r   Ú	match_endÚmatch_expressionÚmatch_control_lineÚmatch_commentÚmatch_tag_startÚmatch_tag_endÚmatch_python_blockÚmatch_percentÚ
match_textr   ÚMakoExceptionr   rI   r^   r#   r   r   r"   r   )r   Úpreprocs     r   ÚparseÚLexer.parseå   s  € Ø#'×#9Ñ#9Ø�I‰I�t˜TŸ]™]¨D¯M©Mó$
Ñ ˆŒ�t”yð ×(Ô(ˆGÙ §	¡	Ó*ˆDŽIñ )ð
 	�‰�t—‘Ô'ä˜dŸi™i›.ˆŒàØ×"Ñ" T§_¡_Ó4Øà�~‰~×ÑØØ×$Ñ$×&Ñ&ÙØ×&Ñ&×(Ñ(ÙØ×!Ñ!×#Ñ#ÙØ×#Ñ#×%Ñ%ÙØ×!Ñ!×#Ñ#ÙØ×&Ñ&×(Ñ(ÙØ×!Ñ!×#Ñ#ÙØ�‰× Ñ Ùà×"Ñ" T§_¡_Ó4Øä×*Ò*Ð+=Ó>Ð>äˆt�x‰x�=‰=Ü×,Ò,Ø&¨¯©°"©×)=Ñ)=Ñ=ñà×'Ñ'ñð ô ˆt× Ñ ×!Ñ!Ü×,Ò,Ø4Ø×#Ñ# BÑ'×/Ñ/ñ0à—	‘	Ø×!Ñ! "Ñ%×,Ñ,Ø×!Ñ! "Ñ%×)Ñ)Ø—‘óð ð �}‰}Ðr   c                 ó:  • SnU R                  U[        R                  [        R                  -  [        R                  -  5      nU(       d  gUR                  5       u  p4nX0l        0 nU(       aD  [        R                  " SU5       H)  nUu  p‰n
U	=(       d    U
nUR                  SS5      nX¶U'   M+     U R                  [        R                  X65        U(       a  U R                  R                  5         gUS:X  a¡  U R                  S[        R                  5      nU(       d;  [        R                  " SU R                  S	   R                  -  40 U R                   D6eU R                  [        R"                  UR%                  S
5      5        U R'                  5       $ g)NaÈ  
            \<%     # opening tag

            ([\w\.\:]+)   # keyword

            ((?:\s+\w+|\s*=\s*|"[^"]*?"|'[^']*?'|\s*,\s*)*)  # attrname, = \
                                               #        sign, string expression
                                               # comma is for backwards compat
                                               # identified in #366

            \s*     # more whitespace

            (/)?>   # closing

        Fz)\s*(\w+)\s*=\s*(?:'([^']*)'|\"([^\"]*)\")ú
r1   r   z(.*?)(?=\</%text>)r|   rU   r
   T)r.   r(   ÚIrF   ÚXÚgroupsr^   ÚfindallÚreplaceri   r   r_   r   rb   r   rI   r#   ÚTextrH   r‚   )r   r-   r.   r^   Úattrra   Ú
attributesÚattÚkeyÚval1Úval2r   s               r   r�   ÚLexer.match_tag_start  sP  € ðˆð  —
‘
ØÜ�D‰D”2—4‘4‰Kœ"Ÿ$™$Ñó
ˆö
 Øà$Ÿ|™|›~Ñˆ�uØŒØˆ
ÞÜ—z’zØ<¸dö�ð #&‘�˜4Ø—|˜t�Ø—|‘| F¨DÓ1�Ø"&˜3“ñð 	×ÑœŸ™¨Ô<ÞØ�H‰H�L‰LŒNð ð ˜ÓØ—J‘JÐ4´b·d±dÓ;ˆEÞÜ ×0Ò0Ø*¨T¯X©X°b©\×-AÑ-AÑAñà×+Ñ+ñð ð ×ÑœYŸ^™^¨U¯[©[¸«^Ô<Ø×%Ñ%Ó'Ð'Ør   c                 óü  • U R                  S5      nU(       aä  [        U R                  5      (       d3  [        R                  " SUR                  S5      -  40 U R                  D6eU R                  S   R                  UR                  S5      :w  aP  [        R                  " SUR                  S5      < SU R                  S   R                  < S340 U R                  D6eU R                  R                  5         gg	)
Nz\</%[\t ]*([^\t ]+?)[\t ]*>z(Closing tag without opening tag: </%%%s>r
   rU   zClosing tag </%z> does not match tag: <%Ú>TF)	r.   rG   r   r   rI   rH   r#   r^   rb   ©r   r.   s     r   r‚   ÚLexer.match_tag_endQ  sÏ   € Ø—
‘
Ð9Ó:ˆÞÜ�t—x‘x—=‘=Ü ×0Ò0Ø>Ø—k‘k !“nñ%ñð ×+Ñ+ñð ð
 —‘˜"‘×%Ñ%¨¯©°Q«Ó7Ü ×0Ó0à—{‘{ 1–~ t§x¡x°¡|×';Ô';ð=ñð ×+Ñ+ñð ð
 �H‰H�L‰LŒNØàr   c                 ó†   • U R                  S[        R                  5      nU(       d  gUR                  5       nU(       a  U$ g)Nz\ZFT)r.   r(   rF   rH   )r   r.   Ústrings      r   r}   ÚLexer.match_ende  s2   € Ø—
‘
˜5¤"§$¡$Ó'ˆÞØà—‘“ˆÞØˆMàr   c                 óÜ   • U R                  S[        R                  5      nU(       aE  U R                  [        R
                  UR                  S5      S-   UR                  S5      -   5        gg)Nz(?<=^)(\s*)%%(%*)r
   Ú%é   TF)r.   r(   ÚMri   r   r‘   rH   r›   s     r   r„   ÚLexer.match_percentp  sS   € Ø—
‘
Ð/´·±Ó6ˆÞØ×ÑÜ—‘ §¡¨A£°Ñ 4°u·{±{À1³~Ñ Eôð àr   c                 óæ   • U R                  S[        R                  [        R                  -  5      nU(       a9  UR	                  S5      nU(       a   U R                  [        R                  U5        gg)Na—  
                (.*?)         # anything, followed by:
                (
                 (?<=\n)(?=[ \t]*(?=%|\#\#))  # an eval or line-based
                                            # comment, preceded by a
                                            # consumed newline and whitespace
                 |
                 (?=\${)      # an expression
                 |
                 (?=</?%)  # a substitution or block or call start or end
                              # - don't consume
                 |
                 (\\\r?\n)    # an escaped newline  - throw away
                 |
                 \Z           # end of string
                )r
   TF)r.   r(   r�   rF   rH   ri   r   r‘   )r   r.   r   s      r   r…   ÚLexer.match_textz  sU   € Ø—
‘
ðô  �D‰D”2—4‘4‰Kó#
ˆö( Ø—;‘;˜q“>ˆDÞØ× Ñ ¤§¡°Ô6Øàr   c                 ó  • U R                  S5      nU(       am  U R                  U R                  p2U R                  SS5      u  pE[	        U5      S-   nU R                  [        R                  UUR                  S5      S:H  UUS9  gg)	Nz<%(!)?Fz%>r1   r
   Ú!rD   T)	r.   r   r   rR   r   ri   r   ÚCoderH   )r   r.   Úliner"   r   r8   s         r   rƒ   ÚLexer.match_python_block—  s†   € Ø—
‘
˜9Ó%ˆÞØ×+Ñ+¨T×-AÑ-A�#Ø×-Ñ-¨e°UÓ;‰IˆDô % TÓ*¨TÑ1ˆDØ×ÑÜ—‘ØØ—‘˜A“ #Ñ%ØØð ñ ð àr   c                 óJ  • U R                  S5      nU(       d  gU R                  U R                  p2U R                  SSS5      u  pEUS:X  a  U R                  SS5      u  peOSnUR	                  SS	5      nU R                  [        R                  UUR                  5       UUS
9  g)Nz\${FTz\|r>   r<   Ú r‹   r1   rD   )	r.   r   r   rR   r�   ri   r   Ú
ExpressionÚstrip)r   r.   rª   r"   r   r8   Úescapess          r   r~   ÚLexer.match_expressionª  s¤   € Ø—
‘
˜6Ó"ˆÞØà×'Ñ'¨×)=Ñ)=ˆcØ×)Ñ)¨$°°tÓ<‰	ˆØ�#‹:Ø×0Ñ0°°tÓ<‰LˆG�SàˆGØ�|‰|˜F DÓ)ˆØ×ÑÜ× Ñ ØØ�M‰M‹OØØð 	ñ 	
ð r   c                 ó0  • U R                  S[        R                  5      nU(       d  gUR                  S5      nUR                  S5      nUS:X  Ga%  [        R                   " SU5      nU(       d$  [        R
                  " SU-  40 U R                  D6eUR                  SS5      u  pVUS LnU(       a¢  [        U R                  5      (       d*  [        R
                  " SU< S	U< S
340 U R                  D6eU R                  S   R                  U:w  aA  [        R
                  " SU< SU R                  S   R                  < S
340 U R                  D6eU R                  [        R                  XeU5        gU R                  [        R                  U5        g)NzC(?<=^)[\t ]*(%(?!%)|##)[\t ]*((?:(?:\\\r?\n)|[^\r\n])*)(?:\r?\n|\Z)Fr
   r¢   r¡   z(end)?(\w+)\s*(.*)zInvalid control line: '%s'zNo starting keyword 'z' for 'rW   rU   rV   z' doesn't match keyword 'T)r.   r(   r£   rH   r   rI   r#   rG   r   r^   ri   r   r\   ÚComment)r   r.   Úoperatorr   Úm2ra   r^   s          r   r   ÚLexer.match_control_line¿  sp  € Ø—
‘
ðä�D‰Dó
ˆö
 Øà—;‘;˜q“>ˆØ�{‰{˜1‹~ˆØ�sŒ?Ü—’Ð/°Ó6ˆBÞÜ ×0Ò0Ø0°4Ñ7ñà×+Ñ+ñð ð  ŸX™X a¨›^‰NˆEØ Ð%ˆEæÜ˜4×,Ñ,×-Ñ-Ü$×4Ó4Û?FËÐMñà×/Ñ/ñð ð ×&Ñ& rÑ*×2Ñ2°gÓ=Ü$×4Ó4ã ×!2Ñ!2°2Ñ!6×!>Ô!>ð@ñð ×/Ñ/ñð ð
 ×ÑœY×2Ñ2°GÀDÔIð ð ×ÑœY×.Ñ.°Ô5Ør   c                 ó²   • U R                  S[        R                  5      nU(       a0  U R                  [        R
                  UR                  S5      5        gg)z*matches the multiline version of a commentz<%doc>(.*?)</%doc>r
   TF)r.   r(   rF   ri   r   r³   rH   r›   s     r   r€   ÚLexer.match_commentå  s>   € à—
‘
Ð0´"·$±$Ó7ˆÞØ×ÑœY×.Ñ.°·±¸A³Ô?Øàr   )r   r   r   r^   r   r   r   r   r   r   r   r   r   r3   )NNN)N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Úpropertyr#   r.   r*   rR   ri   r(   r)   rn   ry   rˆ   r�   r‚   r}   r„   r…   rƒ   r~   r   r€   Ú__static_attributes__© r   r   r   r      s€   † àEIô-ð, ñ
ó ð
ô	#òò,1òf0ðd —’Ð?Ó@€Jò(%òT8òt0òdò(	òòò:ò&ò*$õLr   r   )
Ú__doc__rp   r(   Úmakor   r   Ú
mako.pygenr   r&   r   r¿   r   r   Ú<module>rÃ      s+   ðñ Nã Û 	å Ý Ý (à€÷Yò Yr   