
                           S r SSKrSSKJrJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SS	KJrJr  SS
KJr  SSKJr  SSKJrJrJrJrJrJrJrJrJ r   SSK!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-  SSK.J/r/J0r0  / SQr1 " S S\5      r2 " S S\5      r3 " S S\5      r4 " S S\5      r5 " S S\5      r6 " S S\5      r7 " S S\5      r8 " S S\5      r9 " S  S!\5      r: " S" S#\5      r; " S$ S%\5      r< " S& S'\5      r= " S( S)\5      r> " S* S+\5      r? " S, S-\5      r@ " S. S/\5      rA " S0 S1\5      rB " S2 S3\5      rC " S4 S5\5      rD " S6 S7\5      rE " S8 S9\5      rF " S: S;\5      rG " S< S=\5      rH " S> S?\5      rI " S@ SA\5      rJ " SB SC\5      rK " SD SE\5      rL " SF SG\5      rM " SH SI\5      rN " SJ SK\5      rO " SL SM\5      rP " SN SO\5      rQ " SP SQ\5      rR " SR SS\5      rS " ST SU\5      rT " SV SW\5      rU " SX SY\5      rV " SZ S[\5      rW " S\ S]\5      rX " S^ S_\5      rY " S` Sa\5      rZ " Sb Sc\5      r[ " Sd Se\5      r\ " Sf Sg\5      r] " Sh Si\5      r^ " Sj Sk\5      r_ " Sl Sm\5      r` " Sn So\5      ra " Sp Sq\5      rb " Sr Ss\5      rc " St Su\5      rd " Sv Sw\5      re " Sx Sy\5      rf " Sz S{\5      rg " S| S}\5      rh " S~ S\5      ri " S S\5      rj " S S\5      rk " S S\5      rl " S S\5      rm " S S\5      rn " S S\5      ro " S S\5      rp " S S\5      rq " S S\5      rr " S S\5      rs " S S\5      rt " S S\5      ru " S S\5      rvg)z
pygments.lexers.templates
~~~~~~~~~~~~~~~~~~~~~~~~~

Lexers for various template engines' markup.

:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
    N)	HtmlLexerXmlLexer)JavascriptLexer
LassoLexer)CssLexer)PhpLexer)PythonLexer)	PerlLexer)	JavaLexerTeaLangLexer)	YamlLexer)SqlLexer)	LexerDelegatingLexer
RegexLexerbygroupsincludeusingthisdefaultcombined)ErrorPunctuation
WhitespaceTextCommentOperatorKeywordNameStringNumberOtherToken)html_doctype_matcheslooks_like_xml)@HtmlPhpLexerXmlPhpLexerCssPhpLexerJavascriptPhpLexerErbLexer
RhtmlLexerXmlErbLexerCssErbLexerJavascriptErbLexerSmartyLexerHtmlSmartyLexerXmlSmartyLexerCssSmartyLexerJavascriptSmartyLexerDjangoLexerHtmlDjangoLexerCssDjangoLexerXmlDjangoLexerJavascriptDjangoLexerGenshiLexerHtmlGenshiLexerGenshiTextLexerCssGenshiLexerJavascriptGenshiLexerMyghtyLexerMyghtyHtmlLexerMyghtyXmlLexerMyghtyCssLexerMyghtyJavascriptLexer
MasonLexer	MakoLexerMakoHtmlLexerMakoXmlLexerMakoJavascriptLexerMakoCssLexerJspLexerCheetahLexerCheetahHtmlLexerCheetahXmlLexerCheetahJavascriptLexerEvoqueLexerEvoqueHtmlLexerEvoqueXmlLexerColdfusionLexerColdfusionHtmlLexerColdfusionCFCLexerVelocityLexerVelocityHtmlLexerVelocityXmlLexerSspLexerTeaTemplateLexerLassoHtmlLexerLassoXmlLexerLassoCssLexerLassoJavascriptLexerHandlebarsLexerHandlebarsHtmlLexerYamlJinjaLexerLiquidLexer	TwigLexerTwigHtmlLexerAngular2LexerAngular2HtmlLexerSqlJinjaLexerc                   x    \ rS rSrSrSrSrS/rS/r\	R                  " S\	R                  5      rS rS	 rS
 rSrg)r*   3   z
Generic ERB (Ruby Templating) lexer.

Just highlights ruby code between the preprocessor directives, other data
is left untouched by the lexer.

All options are also forwarded to the `RubyLexer`.
ERBzhttps://github.com/ruby/erberbzapplication/x-ruby-templatingz*(<%%|%%>|<%=|<%#|<%-|<%|-%>|%>|^%[^%].*?$)c                 X    SSK Jn  U" S0 UD6U l        [        R                  " U 40 UD6  g )Nr   )	RubyLexer )pygments.lexers.rubyrk   
ruby_lexerr   __init__)selfoptionsrk   s      ,lib/third_party/pygments/lexers/templates.pyro   ErbLexer.__init__D   s%    2#.g.t'w'    c              #     #    U R                   R                  U5      nUR                  5         S=p4  US:X  a-  UR                  5       nU[        U4v   U[        U5      -  nSnGOUS:X  Gar  UR                  5       nUS;   a  U[        U4v   US-  nSnGOUS:X  aH  U[        R                  U4v   UR                  5       nUS-   [        U4v   US[        U5      -   -  nSnGOGUS;   as  U[        R                  U4v   U[        U5      -  nUR                  5       nSnU R                  R                  U5       H  u  pn
X-   X4v   M     U[        U5      -  nSnOUS;   a  U[        U4v   U[        U5      -  nSnOU[        R                  US   4v   SnU R                  R                  USS	 5       H  u  pn
US-   U-   X4v   M     U[        U5      -  nSnOMUS:X  aG  UR                  5       nUS;  a  U[        U4v   OU[        R                  U4v   U[        U5      -  nSnGM  ! [         a     g	f = f7f)
z
Since ERB doesn't allow "<%" and other tags inside of ruby
blocks we have to use a split approach here that fails for
that too.
r      )z<%%z%%>   z<%#   )<%z<%=z<%-)%>z-%>N)	_block_resplitreversepopr"   lenr   Preprocrn   get_tokens_unprocessedr   
IndexError)rp   texttokensstateidxvaltagdatar_idxr_tokenr_values              rr   r   ErbLexer.get_tokens_unprocessedI   sL     %%d+9	A: **,Cuc/)3s8OCEaZ **,Cn,!5#o-q !!7??C77$jjl!Agw33q3s8|+ ! 44!7??C77s3x%zz| ! $ F Ft L 4EG"'+w"?? !Ms4y( !-!5#o-s3x ! "7??CF:: ! $ F Fs12w O 4EG"%'E/7"CC !Ps3x !aZ **,C-/!5#o-!7??C773s8OCEm n  		s#   /H?G=H/ /
H<9H?;H<<H?c                      SU ;   a  SU ;   a  gg g )Nry   rz   皙?rl   r   s    rr   analyse_textErbLexer.analyse_text   s    4<DDL )<rt   )rn   N)__name__
__module____qualname____firstlineno____doc__nameurlaliases	mimetypesrecompileMr{   ro   r   r   __static_attributes__rl   rt   rr   r*   r*   3   sH     D
'CgG01I

H"$$OI(
BHrt   r*   c                   B   \ rS rSrSrSrSrS/rS/rS/r	\
R                  \
R                  -  rS\4S	\" \R"                  \\R"                  5      4S
\" \R"                  \" \SS9\R"                  5      4S\" \R"                  \R*                  \5      S4S\R"                  S4/S\4S\R"                  S4S\R"                  S4S\R.                  4S\R.                  4S\4S\R4                  4S\4S\R:                  4S\R<                  4S\R>                  4/S.r S r!Sr"g)r/      z
Generic Smarty template lexer.

Just highlights smarty code between the preprocessor directives, other
data is left untouched by the lexer.
Smartyzhttps://www.smarty.net/smarty*.tplzapplication/x-smarty[^{]+z(\{)(\*.*?\*)(\})z(\{php\})(.*?)(\{/php\})T)startinlinez(\{)(/?[a-zA-Z_]\w*)(\s*)\{\s+#push\}#popz#[a-zA-Z_]\w*#z\$[a-zA-Z_]\w*(\.\w+)*z[~!%^&*()+=|\[\]:;,.<>/?@-](true|false|null)\b>[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?"(\\\\|\\[^\\]|[^"\\])*"'(\\\\|\\[^\\]|[^'\\])*'[a-zA-Z_]\w*)rootr   c                    Sn[         R                  " SU 5      (       a  US-  n[         R                  " SU 5      (       a  US-  n[         R                  " SU 5      (       a  US-  n[         R                  " SU 5      (       a  US-  nU$ )N        z\{if\s+.*?\}.*?\{/if\}333333?z\{include\s+file=.*?\}z \{foreach\s+.*?\}.*?\{/foreach\}z	\{\$.*?\}{Gz?r   searchr   rvs     rr   r   SmartyLexer.analyse_text   sw    99.55$JB99.55$JB998$??$JB99\4(($JB	rt   rl   N)#r   r   r   r   r   r   r   r   	filenamesr   r   	MULTILINEDOTALLflagsr"   r   r   r   r   r   r   Functionr   Variabler   r   Constantr!   r    DoubleSingle	Attributer   r   r   rl   rt   rr   r/   r/      sQ    D
#CjG	I'(ILL299$E u!goow@B(goouX4'Hoo'( *goot}}d;XGGOOX.

 TNGOOW-GOOV,.&6+X6#W%5%56'(.0(&--8(&--8dnn-
F8
rt   r/   c                      \ rS rSrSrSrSrS/rSS/r\	R                  \	R                  -  rSrS	\4S
\" \R"                  \\R"                  5      4S\" \R"                  \5      4S\-   S-   \" \R"                  \R&                  \R"                  \5      S4S\-   S-   \" \R"                  \R&                  \R"                  5      4S\S4/\\R*                  4S\S4S\-   S-   \" \\R*                  5      S4S\S4\" S5      /S\4S\S4S\-   S-   \R&                  4\" S5      /S\4\" S5      S\S4/S\S4S\4S \4S!\R6                  4S"\R8                  4S#\4S$\4S%\R>                  4S\S4S&\S4S'\S4S\S4S\S4S\S4/S(.r S) r!S*r"g+),rT      z
Generic Velocity template lexer.

Just highlights velocity directives and variable references, other
data is left untouched by the lexer.
Velocityzhttps://velocity.apache.org/velocity*.vm*.fhtmlr   z[^{#$]+z(#)(\*.*?\*)(#)z
(##)(.*?$)z(#\{?)(z)(\}?)(\s?\()directiveparamsz)(\}|\b)z\$!?\{?variablez\(
funcparamsz(\.)()r   r   r   z=(&&|\|\||==?|!=?|[-<>+*%&|^/])|\b(eq|ne|gt|lt|ge|le|not|in)\bz\[rangeoperatorz\bz\.\.z\]r   z[,:]r   r   z0[xX][0-9a-fA-F]+[Ll]?z
\b[0-9]+\br   \)r   )r   r   r   r   r   c                 l   Sn[         R                  " SU [         R                  5      (       a  US-  n[         R                  " SU [         R                  5      (       a  US-  n[         R                  " SU [         R                  5      (       a  US-  n[         R                  " SU 5      (       a  US-  nU$ )	Nr   z #\{?macro\}?\(.*?\).*?#\{?end\}?      ?z#\{?if\}?\(.+?\).*?#\{?end\}?r   z"#\{?foreach\}?\(.+?\).*?#\{?end\}?z6\$!?\{?[a-zA-Z_]\w*(\([^)]*\))?(\.\w+(\([^)]*\))?)*\}?r   r   r   r   r   s     rr   r   VelocityLexer.analyse_text  s    998$		JJ$JB995tRYYGG$JB99:D"))LL$JB99 0157 7$JB	rt   rl   N)#r   r   r   r   r   r   r   r   r   r   r   r   r   
identifierr"   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r!   r   r   r   r   r   rl   rt   rr   rT   rT      s0    D
(ClG#ILL299$E J goow@Bgoow/1*$'77goot}}goo{S  *${2goot}}gooFHj1
 'K.
"T)k4==17<K(FO
 NHo.Z%'7L!
 hL!Hf%
 j1TNk"(&--8(&--8&/F##W%5%56K)K(K)K(K)K(
E2Fhrt   rT   c                   D   ^  \ rS rSrSrSrS/rSS/rS/rU 4S jr	S	r
U =r$ )
rU   i  zU
Subclass of the `VelocityLexer` that highlights unlexed data
with the `HtmlLexer`.

zHTML+Velocityzhtml+velocity*.htmlr   ztext/html+velocityc                 :   > [         TU ]  " [        [        40 UD6  g N)superro   r   rT   rp   rq   	__class__s     rr   ro   VelocityHtmlLexer.__init__*      M=W=rt   rl   )r   r   r   r   r   r   r   alias_filenamesr   ro   r   __classcell__r   s   @rr   rU   rU     s3     DG+O%&I> >rt   rU   c                   J   ^  \ rS rSrSrSrS/rSS/rS/rU 4S jr	S	 r
S
rU =r$ )rV   i.  zT
Subclass of the `VelocityLexer` that highlights unlexed data
with the `XmlLexer`.

zXML+Velocityzxml+velocity*.xmlr   zapplication/xml+velocityc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rT   r   s     rr   ro   VelocityXmlLexer.__init__:  s    =<G<rt   c                 `    [         R                  U 5      S-
  n[        U 5      (       a  US-  nU$ Nr   r   )rT   r   r%   r   s     rr   r   VelocityXmlLexer.analyse_text=  s0    ''-4$#IB	rt   rl   r   r   r   r   r   r   r   r   r   ro   r   r   r   r   s   @rr   rV   rV   .  s8     DG'O+,I= rt   rV   c                      \ rS rSrSrSrSS/rSS/r\R                  \R                  -  rS\4S	\R                  S
4S\4S\" \R                  \\\\R                  \\R                  \\\\R                  5      4S\" \R                  \\\\R                  \\R                  \\\\R                  5      4S\" \R                  \\\\R&                  5      S4S\" \R                  \\5      S4S\4/S\" \\\R&                  5      4S\" \\\\\R&                  5      4S\R*                  4S\4S\R,                  4S\R.                  4S\R.                  4S\R2                  4S\R4                  4S\4S\4/S\4S\" \\R                  5      S4\" S 5      /S\4S!\" \\R                  5      S4\" S 5      S"\4/S#.rS$ rS%r g&)'r4   iD  z
Generic `django <http://www.djangoproject.com/documentation/templates/>`_
and `jinja <https://jinja.pocoo.org/jinja/>`_ template lexer.

It just highlights django/jinja code between the preprocessor directives,
other data is left untouched by the lexer.
zDjango/Jinjadjangojinjazapplication/x-django-templatingzapplication/x-jinjar   \{\{varz	\{#.*?#\}zJ(\{%)(-?\s*)(comment)(\s*-?)(%\})(.*?)(\{%)(-?\s*)(endcomment)(\s*-?)(%\})B(\{%)(-?\s*)(raw)(\s*-?)(%\})(.*?)(\{%)(-?\s*)(endraw)(\s*-?)(%\})z'(\{%)(-?\s*)(filter)(\s+)([a-zA-Z_]\w*)block(\{%)(-?\s*)([a-zA-Z_]\w*)r   z(\|)(\s*)([a-zA-Z_]\w*)z#(is)(\s+)(not)?(\s+)?([a-zA-Z_]\w*)z%(_|true|false|none|True|False|None)\bzm(in|as|reversed|recursive|not|and|or|is|if|else|import|with(?:(?:out)?\s*context)?|scoped|ignore\s+missing)\bz(loop|block|super|forloop)\bz[a-zA-Z_][\w-]*z\.\w+:?"(\\\\|\\[^\\]|[^"\\])*":?'(\\\\|\\[^\\]|[^'\\])*'z ([{}()\[\]+\-*/%,:~]|[><=]=?|!=)r   r   
(-?)(\}\})r   varnames	(-?)(%\}).)r   r   r   r   c                     Sn[         R                  " SU 5      b  US-  n[         R                  " SU 5      b  US-  n[         R                  " SU 5      b  US-  nU$ )Nr   z\{%\s*(block|extends)r   z\{%\s*if\s*.*?%\}皙?z\{\{.*?\}\}r   r   s     rr   r   DjangoLexer.analyse_text  s\    99-t4@#IB99)40<#IB99^T*6#IB	rt   rl   N)!r   r   r   r   r   r   r   r   r   r   Sr   r"   r   r   r   r   r   r   r   r   PseudoBuiltinr   r    r   r   r!   r   r   r   r   r   rl   rt   rr   r4   r4   D  s+    D!G24IJIDD244KE ugoou-7#5gootWdGOOwgtoo'(1gootWdGOOGOOT7Doo'( 8gootWdDMMJ +gootW5w@EN/
4 (hdmm463gtWdDMMBD5w~~FG -dll;/t}}%*FMM:*FMM:0(;'(.0
& TNHT7??;VDJ
 TN8D'//:FCJ;	
c7Frrt   r4   c                      \ rS rSrSrSrSrS/rSS/rS/r	S	S
\
4S\" \R                  \
\R                  \R                  \" \5      \R                  5      4S\" \R                  \R                  \R                  \" \5      \R                  5      4S\" \R                  \R                  \" \5      \R                  5      4S\" \R                  \R                  \" \5      \R                  5      4S\R                  4S\" \R                  \" \5      \R                  5      4S\4S\" \R                  \" \5      \5      4S\" \\5      4/
0rSrg)r>   i  zs
Generic myghty templates lexer. Code that isn't Myghty
markup is yielded as `Token.Other`.

.. versionadded:: 0.6
Myghtyzhttp://www.myghty.org/myghtyz*.mytautodelegatezapplication/x-myghtyr   r   3(?s)(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)z#(?s)(<%\w+)(.*?)(>)(.*?)(</%\2\s*>)z(<&[^|])(.*?)(,.*?)?(&>)(?s)(<&\|)(.*?)(,.*?)?(&>)</&>(?s)(<%!?)(.*?)(%>)(?<=^)#[^\n]*(\n|\Z)(?<=^)(%)([^\n]*)(\n|\Z)  (?sx)
                 (.+?)               # anything, followed by:
                 (?:
                  (?<=\n)(?=[%#]) |  # an eval or comment line
                  (?=</?[%&]) |      # a substitution or block or
                                     # call start or end
                                     # - don't consume
                  (\\\n) |           # an escaped newline
                  \Z                 # end of string
                 )rl   N)r   r   r   r   r   r   r   r   r   r   r   r   r   Tagr   r   r   r	   r   r"   r   r   r   rl   rt   rr   r>   r>     sa    D
"CjG.)I'(I 	TNCdhhdmmTXXDk488-. 4dhhtxxK($((45 )dhhu[/A488LN*dhhu[/A488LNdhh#dhhk 2DHH=?$g.(dhhk 2E:<	  x0	2%
Frt   r>   c                   <   ^  \ rS rSrSrSrS/rS/rU 4S jrSr	U =r
$ )r?   i  zi
Subclass of the `MyghtyLexer` that highlights unlexed data
with the `HtmlLexer`.

.. versionadded:: 0.6
zHTML+Myghtyzhtml+myghtyztext/html+myghtyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r>   r   s     rr   ro   MyghtyHtmlLexer.__init__      K;7;rt   rl   r   r   r   r   r   r   r   r   ro   r   r   r   s   @rr   r?   r?     s(     DoG#$I< <rt   r?   c                   <   ^  \ rS rSrSrSrS/rS/rU 4S jrSr	U =r
$ )r@   i  zh
Subclass of the `MyghtyLexer` that highlights unlexed data
with the `XmlLexer`.

.. versionadded:: 0.6
z
XML+Myghtyz
xml+myghtyzapplication/xml+myghtyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r>   r   s     rr   ro   MyghtyXmlLexer.__init__      ;:':rt   rl   r  r   s   @rr   r@   r@     s(     DnG)*I; ;rt   r@   c                   @   ^  \ rS rSrSrSrSS/r/ SQrU 4S jrSr	U =r
$ )	rB   i  zo
Subclass of the `MyghtyLexer` that highlights unlexed data
with the `JavascriptLexer`.

.. versionadded:: 0.6
zJavaScript+Myghtyzjavascript+myghtyz	js+myghty)zapplication/x-javascript+myghtyztext/x-javascript+myghtyztext/javascript+mygthyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r>   r   s     rr   ro   MyghtyJavascriptLexer.__init__      +AArt   rl   r  r   s   @rr   rB   rB     s,     D"K0G+IB Brt   rB   c                   <   ^  \ rS rSrSrSrS/rS/rU 4S jrSr	U =r
$ )rA   i  zh
Subclass of the `MyghtyLexer` that highlights unlexed data
with the `CssLexer`.

.. versionadded:: 0.6
z
CSS+Myghtyz
css+myghtyztext/css+myghtyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r>   r   s     rr   ro   MyghtyCssLexer.__init__  r  rt   rl   r  r   s   @rr   rA   rA     s(     DnG"#I; ;rt   rA   c                      \ rS rSrSrSrSrS/r/ SQrS/r	SS	\
4S
\" \R                  \R                  \R                  5      4S\" \R                  \
\R                   \R                  \" \5      \R                  5      4S\" \R                  SSS\" \5      \R                  5      4S\" \R                  \R                   \" \5      \R                  5      4S\" \R                  \R                   \" \5      \R                  5      4S\R                  4S\" \R                  \" \5      \R                  5      4S\4S\" \R                  \" \5      \5      4S\" \" \5      \5      4/0rS rSrg)rC   i  zw
Generic mason templates lexer. Stolen from Myghty lexer. Code that isn't
Mason markup is HTML.

.. versionadded:: 1.4
Masonzhttp://www.masonhq.com/mason)z*.mz*.mhtmlz*.mcz*.miautohandlerdhandlerzapplication/x-masonr   r   z(?s)(<%doc>)(.*?)(</%doc>)r  z%(?s)(<%(\w+)(.*?)(>))(.*?)(</%\2\s*>)Nz(?s)(<&[^|])(.*?)(,.*?)?(&>)r  r  r  r  r  r  c                     Sn[         R                  " SU 5      b  SnU$ [         R                  " SU [         R                  5      b  SnU$ )Nr   z</%(class|doc|init)>g      ?z<&.+&>g)\(?r   )r   results     rr   r   MasonLexer.analyse_text6  sH    99,d3?F  YYy$		2>Frt   rl   )r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   	Multiliner   r   r   r
   r"   r   r   r   r   r   rl   rt   rr   rC   rC     s    D
#CiGMI&'I 	Z *dhh 1 1488<>Cdhh
DMM488Dk488-. 6dhhdD%	2BDHHMO,dhhuY/?JL*dhhuY/?JLdhh#dhhi 0$((;=$g.(dhhi 0%8:	  i 0(;	='
FBrt   rC   c                   8   \ rS rSrSrSrSrS/rS/rS/r	S\
" \R                  \R                  \\5      4S	\
" \R                  \R                  \" \5      \5      4S
\
" \R                  \R&                  \R                  5      4S\R(                  4S\
" \R                  \R,                  5      S4S\
" \R                  \R,                  \R                  5      4S\R                  S4S\
" \R                  \" \5      \R                  5      4S\
" \R                  \" \5      \R                  5      4S\
" \\5      4S\4/S\R                  4S\R,                  4\" S5      /S\
" \R2                  \\5      4S\R                  S4S\4/S\S4S\S4S\S4/S.rSrg) rD   i?  zo
Generic mako templates lexer. Code that isn't Mako
markup is yielded as `Token.Other`.

.. versionadded:: 0.7
Makozhttp://www.makotemplates.org/makoz*.maozapplication/x-makoz(\s*)(%)(\s*end(?:\w+))(\n|\Z)z(\s*)(%)([^\n]*)(\n|\Z)z(\s*)(##[^\n]*)(\n|\Z)z(?s)<%doc>.*?</%doc>z(<%)([\w.:]+)r   z(</%)([\w.:]+)(>)z<%(?=([\w.:]+))	ondeftagsz(?s)(<%(?:!?))(.*?)(%>)z(\$\{)(.*?)(\})a\  (?sx)
                (.+?)                # anything, followed by:
                (?:
                 (?<=\n)(?=%|\#\#) | # an eval or comment line
                 (?=\#\*) |          # multiline comment
                 (?=</?%) |          # a python block
                                     # call start or end
                 (?=\$\{) |          # a substitution
                 (?<=\n)(?=\s*%) |
                                     # - don't consume
                 (\\\n) |            # an escaped newline
                 \Z                  # end of string
                )
            r   ry   z'(?<=<%)(include|inherit|namespace|page)z((?:\w+)\s*=)(\s*)(".*?")/?\s*>r   ".*?"'.*?'[^\s>]+)r   r&  r   attrrl   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r   r	   r   r"  r   r   r   r   r   r    r   r   rl   rt   rr   rD   rD   ?  s    D
)ChG	I%&I /doowGI'doowk8JERT&doow~~tGI$g&7&78goot||4e=!goot||W__EG+>'goou['97??KMgoou['97??KM %*, TN? 
D GOO$7FEN
 *dnndF350TN	
 ff%ff%(
[2Frt   rD   c                   <   ^  \ rS rSrSrSrS/rS/rU 4S jrSr	U =r
$ )rE   i  zg
Subclass of the `MakoLexer` that highlights unlexed data
with the `HtmlLexer`.

.. versionadded:: 0.7
z	HTML+Makoz	html+makoztext/html+makoc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rD   r   s     rr   ro   MakoHtmlLexer.__init__      I99rt   rl   r  r   s   @rr   rE   rE     s(     DmG!"I: :rt   rE   c                   <   ^  \ rS rSrSrSrS/rS/rU 4S jrSr	U =r
$ )rF   i  zf
Subclass of the `MakoLexer` that highlights unlexed data
with the `XmlLexer`.

.. versionadded:: 0.7
zXML+Makozxml+makozapplication/xml+makoc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rD   r   s     rr   ro   MakoXmlLexer.__init__      988rt   rl   r  r   s   @rr   rF   rF     s(     DlG'(I9 9rt   rF   c                   @   ^  \ rS rSrSrSrSS/r/ SQrU 4S jrSr	U =r
$ )	rG   i  zm
Subclass of the `MakoLexer` that highlights unlexed data
with the `JavascriptLexer`.

.. versionadded:: 0.7
zJavaScript+Makozjavascript+makozjs+mako)zapplication/x-javascript+makoztext/x-javascript+makoztext/javascript+makoc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rD   r   s     rr   ro   MakoJavascriptLexer.__init__  s    )?w?rt   rl   r  r   s   @rr   rG   rG     s,     D ),G)I@ @rt   rG   c                   <   ^  \ rS rSrSrSrS/rS/rU 4S jrSr	U =r
$ )rH   i  zf
Subclass of the `MakoLexer` that highlights unlexed data
with the `CssLexer`.

.. versionadded:: 0.7
zCSS+Makozcss+makoztext/css+makoc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rD   r   s     rr   ro   MakoCssLexer.__init__  r3  rt   rl   r  r   s   @rr   rH   rH     s(     DlG !I9 9rt   rH   c                       \ rS rSrSrS rSrg)CheetahPythonLexeri  zA
Lexer for handling Cheetah's special $ tokens in Python syntax.
c              #      #    [        S0 U R                  D6nUR                  U5       H6  u  p4nU[        R                  :X  a  US:X  a  [
        R                  nX4U4v   M8     g 7f)N$rl   )r	   rq   r   r#   r   r   r   )rp   r   pylexerpostype_values         rr   r   )CheetahPythonLexer.get_tokens_unprocessed  sW     --!(!?!?!EC#e## "Fs   A"A$rl   N)r   r   r   r   r   r   r   rl   rt   rr   r;  r;    s    $rt   r;  c                   `   \ rS rSrSrSrSrSS/rSS/rS	S
/r	SS\
" \5      4S\4S\R                  4S\R                  4S\
" \R                  \" \5      \R                  5      4S\
" \R                  \" \5      5      4S\
" \R                  \" \5      \R                  5      4S\4S\4/	0rSrg)rJ   i  z
Generic cheetah templates lexer. Code that isn't Cheetah
markup is yielded as `Token.Other`.  This also works for
`spitfire templates`_ which use the same syntax.

.. _spitfire templates: http://code.google.com/p/spitfire/
Cheetahzhttp://www.cheetahtemplate.org/cheetahspitfirez*.tmplz*.sptzapplication/x-cheetahzapplication/x-spitfirer   z(##[^\n]*)$z#[*](.|\n)*?[*]#z#end[^#\n]*(?:#|$)z#slurp$z(#[a-zA-Z]+)([^#\n]*)(#|$)z(\$)([a-zA-Z_][\w.]*\w)z(?s)(\$\{!?)(.*?)(\})a  (?sx)
                (.+?)               # anything, followed by:
                (?:
                 (?=\#[#a-zA-Z]*) | # an eval comment
                 (?=\$[a-zA-Z_{]) | # a substitution
                 \Z                 # end of string
                )
            r   rl   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;  r"   r   r   r   rl   rt   rr   rJ   rJ     s     D
+C*%G7#I(*BCI 	w" '*"GOO4)*w.@(A(* (goou-?'@AC%goou-?'@oo'(  TN/
Frt   rJ   c                   @   ^  \ rS rSrSrSr/ SQrSS/rU 4S jrSr	U =r
$ )	rK   i  zS
Subclass of the `CheetahLexer` that highlights unlexed data
with the `HtmlLexer`.
zHTML+Cheetah)zhtml+cheetahzhtml+spitfirehtmlcheetahztext/html+cheetahztext/html+spitfirec                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rJ   r   s     rr   ro   CheetahHtmlLexer.__init__	  s    L<G<rt   rl   r  r   s   @rr   rK   rK     s)    
 D>G$&:;I= =rt   rK   c                   @   ^  \ rS rSrSrSrSS/rSS/rU 4S jrS	r	U =r
$ )
rL   i  zR
Subclass of the `CheetahLexer` that highlights unlexed data
with the `XmlLexer`.
zXML+Cheetahzxml+cheetahzxml+spitfirezapplication/xml+cheetahzapplication/xml+spitfirec                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rJ   r   s     rr   ro   CheetahXmlLexer.__init__      <;7;rt   rl   r  r   s   @rr   rL   rL     s.    
 Dn-G*,FGI< <rt   rL   c                   @   ^  \ rS rSrSrSr/ SQr/ SQrU 4S jrSr	U =r
$ )rM   i  zY
Subclass of the `CheetahLexer` that highlights unlexed data
with the `JavascriptLexer`.
zJavaScript+Cheetah)zjavascript+cheetahz
js+cheetahzjavascript+spitfirezjs+spitfire)z application/x-javascript+cheetahztext/x-javascript+cheetahztext/javascript+cheetahz!application/x-javascript+spitfireztext/x-javascript+spitfireztext/javascript+spitfirec                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rJ   r   s     rr   ro   CheetahJavascriptLexer.__init__+  s    ,B'Brt   rl   r  r   s   @rr   rM   rM     s)    
  D5G-IC Crt   rM   c                   V   \ rS rSrSrSrSrS/rSS/rS\	4S	\
" \\5      4S
\
" \\R                  5      S4\" S5      S\	4/S\S4S\" \5      S4S\
" \\\" \5      5      S4S\S4S\
" \\\5      S4/S\
" \R                  \" \5      \R                  5      4S\R&                  4/S.rSrg)r;   i/  z0
A lexer that highlights genshi text templates.
zGenshi Textzhttp://genshi.edgewall.org/
genshitextzapplication/x-genshi-textztext/x-genshiz[^#$\s]+z^(\s*)(##.*)$z	^(\s*)(#)	directiver   z[#$\s]z\nr   z(?:def|for|if)\s+.*z (choose|when|with)([^\S\n]+)(.*)z(choose|otherwise)\bz(end\w*)([^\S\n]*)(.*)(?<!\$)(\$\{)(.+?)(\})z(?<!\$)(\$)([a-zA-Z_][\w.]*))r   rT  r   rl   N)r   r   r   r   r   r   r   r   r   r"   r   r   r   r   r   r   r	   r   r   r   r   r   rl   rt   rr   r;   r;   /  s     D
'CnG,o>I % xg678D'//:KHJ
 D&!#U;%7@0gtU;%78&B$gv6&$(H&Q
 'goou['97??KM,]]
!Frt   r;   c                      \ rS rSrSr\R                  rS\4S\	" \
R                  \" \5      \
R                  5      4S\4S\R                  S4S\R                  S	4\" S
5      S\4/S\4S\R$                  S4S\R                  S4/S\	" \\" \5      \5      S4S\	" \\" \5      \5      S4S\S4/S\4S\R$                  S4S\R$                  S4S\R                  S4/S\S4S\S4S\S4/S\S4\" S5      S\4/S\S4\" S5      S\4/S\4\" S
5      /S\	" \
R                  \" \5      \
R                  5      4S\R(                  4/S.	rS rg!)"GenshiMarkupLexeriR  zL
Base lexer for Genshi markup, used by `HtmlGenshiLexer` and
`GenshiLexer`.
z[^<$]+z(<\?python)(.*?)(\?>)z'<\s*(script|style)\s*.*?>.*?<\s*/\1\s*>z<\s*py:[a-zA-Z0-9]+pytagz<\s*[a-zA-Z0-9:.]+r   r   z[<$]r   z[\w:-]+\s*=pyattrr'  r   z(")(.*?)(")z(')(.*?)(')r*  zpy:[\w-]+\s*=r+  "attr-dstring'attr-sstringz[^\s>]*stringsz[^"'$]+rU  z(?<!\$)(\$)([a-zA-Z_][\w\.]*))	r   rX  rY  r   r+  r[  r]  r^  r   rl   N)r   r   r   r   r   r   r   r   r"   r   r   r   r   r	   r   r	  r   r   r   r    r   r   r   rl   rt   rr   rW  rW  R  s   
 IIE %goou['97??KM 8?#TXXw7"DHHe4Je

 TNT^^X6&)
 HVU;-?H&QHVU;-?H&Q(
 TNt~~x8T^^V4&)	
 &.)&.)(
 &&!I&M
 &&!I&M
  J

 'goou['97??KM-]]
_5Frt   rW  c                   L   ^  \ rS rSrSrSrSS/r/ SQrS/rU 4S jr	S	 r
S
rU =r$ )r:   i  z}
A lexer that highlights `genshi <http://genshi.edgewall.org/>`_ and
`kid <http://kid-templating.org/>`_ kid HTML templates.
zHTML+Genshizhtml+genshizhtml+kidr   *.htm*.xhtmlztext/html+genshic                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rW  r   s     rr   ro   HtmlGenshiLexer.__init__  s    $5AArt   c                     Sn[         R                  " SU 5      b  US-  n[         R                  " SU 5      b  US-  nU[        R                  " U 5      -   S-
  $ Nr   z	\$\{.*?\}皙?zpy:(.*?)=["\']r   )r   r   r   r   r   s     rr   r   HtmlGenshiLexer.analyse_text  sW    99\4(4#IB99&-9#IBI**400477rt   rl   r   r   s   @rr   r:   r:     s6    
 Dj)G4O#$IB8 8rt   r:   c                   R   ^  \ rS rSrSrSr/ SQrS/rS/rSS/r	U 4S	 jr
S
 rSrU =r$ )r9   i  z|
A lexer that highlights `genshi <http://genshi.edgewall.org/>`_ and
`kid <http://kid-templating.org/>`_ kid XML templates.
Genshi)genshikidz
xml+genshizxml+kidz*.kidr   zapplication/x-genshizapplication/x-kidc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rW  r   s     rr   ro   GenshiLexer.__init__  s    #4@@rt   c                     Sn[         R                  " SU 5      b  US-  n[         R                  " SU 5      b  US-  nU[        R                  " U 5      -   S-
  $ rf  )r   r   r   r   r   s     rr   r   GenshiLexer.analyse_text  sW    99\4(4#IB99&-9#IBH))$//$66rt   rl   r   r   r   r   r   r   r   r   r   r   ro   r   r   r   r   s   @rr   r9   r9     s=    
 D8G	IiO')<=IA7 7rt   r9   c                   L   ^  \ rS rSrSrSr/ SQrS/r/ SQrU 4S jr	S r
S	rU =r$ )
r=   i  zC
A lexer that highlights javascript code in genshi text templates.
zJavaScript+Genshi Text)zjs+genshitextz	js+genshizjavascript+genshitextzjavascript+genshi*.js)zapplication/x-javascript+genshiztext/x-javascript+genshiztext/javascript+genshic                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r;   r   s     rr   ro   JavascriptGenshiLexer.__init__  s    /EWErt   c                 2    [         R                  U 5      S-
  $ N皙?r9   r   r   s    rr   r   "JavascriptGenshiLexer.analyse_text      ''-44rt   rl   r   r   s   @rr   r=   r=     s4     $D$GhO+IF5 5rt   r=   c                   J   ^  \ rS rSrSrSrSS/rS/rS/rU 4S jr	S	 r
S
rU =r$ )r<   i  zC
A lexer that highlights CSS definitions in genshi text templates.
zCSS+Genshi Textzcss+genshitextz
css+genshi*.cssztext/css+genshic                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r;   r   s     rr   ro   CssGenshiLexer.__init__  s    ?>g>rt   c                 2    [         R                  U 5      S-
  $ rw  ry  r   s    rr   r   CssGenshiLexer.analyse_text  r{  rt   rl   r   r   s   @rr   r<   r<     s7     D.GiO"#I?5 5rt   r<   c                   R   ^  \ rS rSrSrSr/ SQrS/r/ SQrS/r	U 4S jr
S	 rS
rU =r$ )r+   i  z
Subclass of the ERB lexer that highlights the unlexed data with the
html lexer.

Nested Javascript and CSS is highlighted too.
RHTML)rhtmlzhtml+erbz	html+rubyz*.rhtmlr`  ztext/html+rubyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r*   r   s     rr   ro   RhtmlLexer.__init__      H88rt   c                 `    [         R                  U 5      S-
  n[        U 5      (       a  US-  nU$ Nr   g      ?)r*   r   r$   r   s     rr   r   RhtmlLexer.analyse_text  s0    ""4(4/%%#IB	rt   rl   rq  r   s   @rr   r+   r+     s7     D0GI4O!"I9 rt   r+   c                   J   ^  \ rS rSrSrSrSS/rS/rS/rU 4S jr	S	 r
S
rU =r$ )r,   i  zc
Subclass of `ErbLexer` which highlights data outside preprocessor
directives with the `XmlLexer`.
zXML+Rubyzxml+rubyzxml+erbr   zapplication/xml+rubyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r*   r   s     rr   ro   XmlErbLexer.__init__
      87w7rt   c                 `    [         R                  U 5      S-
  n[        U 5      (       a  US-  nU$ r   )r*   r   r%   r   s     rr   r   XmlErbLexer.analyse_text  s0    ""4(4/$#IB	rt   rl   r   r   s   @rr   r,   r,     s7    
 D9%GiO'(I8 rt   r,   c                   J   ^  \ rS rSrSrSrSS/rS/rS/rU 4S jr	S	 r
S
rU =r$ )r-   i  zK
Subclass of `ErbLexer` which highlights unlexed data with the `CssLexer`.
zCSS+Rubyzcss+rubyzcss+erbr}  ztext/css+rubyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r*   r   s     rr   ro   CssErbLexer.__init__  r  rt   c                 2    [         R                  U 5      S-
  $ rw  r*   r   r   s    rr   r   CssErbLexer.analyse_text!      $$T*T11rt   rl   r   r   s   @rr   r-   r-     s7     D9%GiO !I82 2rt   r-   c                   L   ^  \ rS rSrSrSr/ SQrS/r/ SQrU 4S jr	S r
S	rU =r$ )
r.   i%  zR
Subclass of `ErbLexer` which highlights unlexed data with the
`JavascriptLexer`.
zJavaScript+Ruby)zjavascript+rubyzjs+rubyzjavascript+erbzjs+erbrs  )zapplication/x-javascript+rubyztext/x-javascript+rubyztext/javascript+rubyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r*   r   s     rr   ro   JavascriptErbLexer.__init__2      (>g>rt   c                 2    [         R                  U 5      S-
  $ rw  r  r   s    rr   r   JavascriptErbLexer.analyse_text5  r  rt   rl   r   r   s   @rr   r.   r.   %  s1    
 DHGhO)I?2 2rt   r.   c                   R   ^  \ rS rSrSrSrS/rS/r/ SQr/ SQr	U 4S jr
S	 rS
rU =r$ )r&   i9  z|
Subclass of `PhpLexer` that highlights unhandled data with the `HtmlLexer`.

Nested Javascript and CSS is highlighted too.
zHTML+PHPzhtml+phpz*.phtml)*.phpr   ra  rb  
*.php[345])zapplication/x-phpzapplication/x-httpd-phpzapplication/x-httpd-php3zapplication/x-httpd-php4zapplication/x-httpd-php5c                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r   r   s     rr   ro   HtmlPhpLexer.__init__I  r  rt   c                 b    [         R                  " U 5      S-
  n[        U 5      (       a  US-  nU$ r  )r   r   r$   r   s     rr   r   HtmlPhpLexer.analyse_textL  s0    ""4(4/%%#IB	rt   rl   rq  r   s   @rr   r&   r&   9  s;     DlGI%OII9 rt   r&   c                   J   ^  \ rS rSrSrSrS/r/ SQrS/rU 4S jr	S r
S	rU =r$ )
r'   iS  zL
Subclass of `PhpLexer` that highlights unhandled data with the `XmlLexer`.
zXML+PHPzxml+php)r   r  r  zapplication/xml+phpc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r   r   s     rr   ro   XmlPhpLexer.__init__]  r  rt   c                 b    [         R                  " U 5      S-
  n[        U 5      (       a  US-  nU$ r   )r   r   r%   r   s     rr   r   XmlPhpLexer.analyse_text`  s0    ""4(4/$#IB	rt   rl   r   r   s   @rr   r'   r'   S  s2     DkG6O&'I8 rt   r'   c                   H   ^  \ rS rSrSrSrS/rS/rS/rU 4S jr	S r
S	rU =r$ )
r(   ig  zM
Subclass of `PhpLexer` which highlights unmatched data with the `CssLexer`.
zCSS+PHPzcss+phpr}  ztext/css+phpc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r   r   s     rr   ro   CssPhpLexer.__init__q  r  rt   c                 4    [         R                  " U 5      S-
  $ rw  r   r   r   s    rr   r   CssPhpLexer.analyse_textt  s    $$T*T11rt   rl   r   r   s   @rr   r(   r(   g  s4     DkGiO I82 2rt   r(   c                   L   ^  \ rS rSrSrSrSS/rS/r/ SQrU 4S jr	S	 r
S
rU =r$ )r)   ix  zT
Subclass of `PhpLexer` which highlights unmatched data with the
`JavascriptLexer`.
zJavaScript+PHPzjavascript+phpzjs+phprs  )zapplication/x-javascript+phpztext/x-javascript+phpztext/javascript+phpc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r   r   s     rr   ro   JavascriptPhpLexer.__init__  r  rt   c                 .    [         R                  " U 5      $ r   r  r   s    rr   r   JavascriptPhpLexer.analyse_text  s    $$T**rt   rl   r   r   s   @rr   r)   r)   x  s6    
 D*GhO(I?+ +rt   r)   c                   J   ^  \ rS rSrSrSrS/r/ SQrS/rU 4S jr	S r
S	rU =r$ )
r0   i  z
Subclass of the `SmartyLexer` that highlights unlexed data with the
`HtmlLexer`.

Nested Javascript and CSS is highlighted too.
zHTML+Smartyzhtml+smarty)r   ra  rb  r   ztext/html+smartyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r/   r   s     rr   ro   HtmlSmartyLexer.__init__  r  rt   c                 `    [         R                  U 5      S-
  n[        U 5      (       a  US-  nU$ r  )r/   r   r$   r   s     rr   r   HtmlSmartyLexer.analyse_text  0    %%d+d2%%#IB	rt   rl   r   r   s   @rr   r0   r0     s2     DoG=O#$I< rt   r0   c                   J   ^  \ rS rSrSrSrS/rSS/rS/rU 4S jr	S	 r
S
rU =r$ )r1   i  zQ
Subclass of the `SmartyLexer` that highlights unlexed data with the
`XmlLexer`.
z
XML+Smartyz
xml+smartyr   r   zapplication/xml+smartyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r/   r   s     rr   ro   XmlSmartyLexer.__init__  r  rt   c                 `    [         R                  U 5      S-
  n[        U 5      (       a  US-  nU$ r   )r/   r   r%   r   s     rr   r   XmlSmartyLexer.analyse_text  0    %%d+d2$#IB	rt   rl   r   r   s   @rr   r1   r1     s7    
 DnG(O)*I; rt   r1   c                   J   ^  \ rS rSrSrSrS/rSS/rS/rU 4S jr	S	 r
S
rU =r$ )r2   i  zQ
Subclass of the `SmartyLexer` that highlights unlexed data with the
`CssLexer`.
z
CSS+Smartyz
css+smartyr}  r   ztext/css+smartyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r/   r   s     rr   ro   CssSmartyLexer.__init__  r  rt   c                 2    [         R                  U 5      S-
  $ rw  r/   r   r   s    rr   r   CssSmartyLexer.analyse_text  r{  rt   rl   r   r   s   @rr   r2   r2     s7    
 DnG(O"#I;5 5rt   r2   c                   N   ^  \ rS rSrSrSrSS/rSS/r/ SQrU 4S	 jr	S
 r
SrU =r$ )r3   i  zX
Subclass of the `SmartyLexer` that highlights unlexed data with the
`JavascriptLexer`.
zJavaScript+Smartyzjavascript+smartyz	js+smartyrs  r   )zapplication/x-javascript+smartyztext/x-javascript+smartyztext/javascript+smartyc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r/   r   s     rr   ro   JavascriptSmartyLexer.__init__  r  rt   c                 2    [         R                  U 5      S-
  $ rw  r  r   s    rr   r   "JavascriptSmartyLexer.analyse_text  r{  rt   rl   r   r   s   @rr   r3   r3     s:    
 D"K0Gw'O+IB5 5rt   r3   c                   V   ^  \ rS rSrSrSr/ SQr/ SQr/ SQrSS/r	U 4S	 jr
S
 rSrU =r$ )r5   i  z
Subclass of the `DjangoLexer` that highlights unlexed data with the
`HtmlLexer`.

Nested Javascript and CSS is highlighted too.
zHTML+Django/Jinja)zhtml+djangoz
html+jinja
htmldjango)z	*.html.j2z*.htm.j2z
*.xhtml.j2z*.html.jinja2z*.htm.jinja2z*.xhtml.jinja2r`  ztext/html+djangoztext/html+jinjac                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r4   r   s     rr   ro   HtmlDjangoLexer.__init__  r  rt   c                 `    [         R                  U 5      S-
  n[        U 5      (       a  US-  nU$ r  )r4   r   r$   r   s     rr   r   HtmlDjangoLexer.analyse_text  r  rt   rl   rq  r   s   @rr   r5   r5     s8     D9GjI4O#%67I< rt   r5   c                   T   ^  \ rS rSrSrSrSS/rSS/rS/rS	S
/r	U 4S jr
S rSrU =r$ )r7   i  zQ
Subclass of the `DjangoLexer` that highlights unlexed data with the
`XmlLexer`.
zXML+Django/Jinjaz
xml+djangoz	xml+jinjaz*.xml.j2z*.xml.jinja2r   zapplication/xml+djangozapplication/xml+jinjac                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r4   r   s     rr   ro   XmlDjangoLexer.__init__  r  rt   c                 `    [         R                  U 5      S-
  n[        U 5      (       a  US-  nU$ r   )r4   r   r%   r   s     rr   r   XmlDjangoLexer.analyse_text  r  rt   rl   rq  r   s   @rr   r7   r7     sD    
 D[)G^,IiO)+BCI; rt   r7   c                   T   ^  \ rS rSrSrSrSS/rSS/rS/rS	S
/r	U 4S jr
S rSrU =r$ )r6   i  zQ
Subclass of the `DjangoLexer` that highlights unlexed data with the
`CssLexer`.
zCSS+Django/Jinjaz
css+djangoz	css+jinjaz*.css.j2z*.css.jinja2r}  ztext/css+djangoztext/css+jinjac                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r4   r   s     rr   ro   CssDjangoLexer.__init__  r  rt   c                 2    [         R                  U 5      S-
  $ rw  r4   r   r   s    rr   r   CssDjangoLexer.analyse_text  r{  rt   rl   rq  r   s   @rr   r6   r6     sD    
 D[)G^,IiO"$45I;5 5rt   r6   c                   T   ^  \ rS rSrSrSr/ SQrSS/rS/r/ SQr	U 4S	 jr
S
 rSrU =r$ )r8   i  zX
Subclass of the `DjangoLexer` that highlights unlexed data with the
`JavascriptLexer`.
zJavaScript+Django/Jinja)zjavascript+djangoz	js+djangozjavascript+jinjazjs+jinjaz*.js.j2z*.js.jinja2rs  )zapplication/x-javascript+djangozapplication/x-javascript+jinjaztext/x-javascript+djangoztext/x-javascript+jinjaztext/javascript+djangoztext/javascript+jinjac                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r4   r   s     rr   ro   JavascriptDjangoLexer.__init__1  r  rt   c                 2    [         R                  U 5      S-
  $ rw  r  r   s    rr   r   "JavascriptDjangoLexer.analyse_text4  r{  rt   rl   rq  r   s   @rr   r8   r8     s>    
 %D/GM*IhO*IB5 5rt   r8   c                   V    \ rS rSrSrS\S4S\4S\4S\4/S\S	4S
\" \5      4/S.r	Sr
g)JspRootLexeri8  zd
Base for the `JspLexer`. Yields `Token.Other` for area outside of
JSP tags.

.. versionadded:: 0.7
<%\S?seczC</?jsp:(forward|getProperty|include|plugin|setProperty|useBean).*?>[^<]+<rz   r   [\w\W]+?(?=%>|\Z)r   r  rl   N)r   r   r   r   r   r   r"   r   r   r   r   rl   rt   rr   r  r  8  sW     w&Su5M
 GV$!5#34
Frt   r  c                   H   ^  \ rS rSrSrSrS/rS/rS/rU 4S jr	S r
S	rU =r$ )
rI   iQ  z5
Lexer for Java Server Pages.

.. versionadded:: 0.7
zJava Server Pagejspz*.jspzapplication/x-jspc                 :   > [         TU ]  " [        [        40 UD6  g r   r   ro   r   r  r   s     rr   ro   JspLexer.__init__\  rN  rt   c                     [         R                  " U 5      S-
  n[        U 5      (       a  US-  nSU ;   a  SU ;   a  US-  nU$ Nr   r   ry   rz   r   )r   r   r%   r   s     rr   r   JspLexer.analyse_text_  sF    ##D)D0$#IB4<DDL#IB	rt   rl   r   r   r   r   r   r   r   r   r   ro   r   r   r   r   s   @rr   rI   rI   Q  s4    
 DgG	I$%I< rt   rI   c                      \ rS rSrSrSrS/rS/rS/r\	R                  rS\4S\R                  S	4S
\4S\R                  4S\" \\R$                  \S\\5      4S\" \\R$                  \S\\" \5      \5      4S\" \\R$                  \S\" \5      \5      4S\" \\R$                  5      4S\" \S\" \5      \R$                  SS\5      4S\4/
S\R                  4S\R                  S4S\R                  S4S\R                  4/S.rS rSrg)rN   ih  zF
For files using the Evoque templating system.

.. versionadded:: 1.1
Evoqueevoquez*.evoquezapplication/x-evoquez[^#$]+z#\[commentz\$\$z\$\w+:[^$\n]*\$z'(\$)(begin|end)(\{(%)?)(.*?)((?(4)%)\})Nz>(\$)(evoque|overlay)(\{(%)?)(\s*[#\w\-"\'.]+)?(.*?)((?(4)%)\})z!(\$)(\w+)(\{(%)?)(.*?)((?(4)%)\})z(\$)(else|rof|fi)z%(\$\{(%)?)(.*?)((!)(.*?))?((?(2)%)\})#z[^\]#]r   z\]#r   z[\]#])r   r  c                     SU ;   a  gg)z.Evoque templates use $evoque, which is unique.z$evoquerv   Nrl   r   s    rr   r   EvoqueLexer.analyse_text  s     rt   rl   )r   r   r   r   r   r   r   r   r   r   r   r   r"   r   r"  r   r   r   r   r    r   r	   r   r   r   rl   rt   rr   rN   rN   h  sl   
 DjGI'(IIIE W&&	2e!2!237k4<<dk+,!k4<<deK0+?@
 2k4<<dK(+78 "8K#FG5k4{);llD$=> 5M9
> ))*W&&0W&&/w(()	
?%FNrt   rN   c                   H   ^  \ rS rSrSrSrS/rS/rS/rU 4S jr	S r
S	rU =r$ )
rO   i  zi
Subclass of the `EvoqueLexer` that highlights unlexed data with the
`HtmlLexer`.

.. versionadded:: 1.1
zHTML+Evoquezhtml+evoquer   ztext/html+evoquec                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rN   r   s     rr   ro   EvoqueHtmlLexer.__init__  r  rt   c                 ,    [         R                  U 5      $ r   rN   r   r   s    rr   r   EvoqueHtmlLexer.analyse_text      ''--rt   rl   r  r   s   @rr   rO   rO     s4     DoG
I#$I<. .rt   rO   c                   H   ^  \ rS rSrSrSrS/rS/rS/rU 4S jr	S r
S	rU =r$ )
rP   i  zh
Subclass of the `EvoqueLexer` that highlights unlexed data with the
`XmlLexer`.

.. versionadded:: 1.1
z
XML+Evoquez
xml+evoquer   zapplication/xml+evoquec                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rN   r   s     rr   ro   EvoqueXmlLexer.__init__  r  rt   c                 ,    [         R                  U 5      $ r   r  r   s    rr   r   EvoqueXmlLexer.analyse_text  r   rt   rl   r  r   s   @rr   rP   rP     s4     DnG	I)*I;. .rt   rP   c                      \ rS rSrSrSrS/r/ r/ r\	R                  rS\R                  4S\R                  4S\4S\4S	\4S
\4S\4S\4S\4S\R"                  S4S\R                  4S\4S\4S\R(                  4S\R(                  4S\" \R.                  \\5      4S\R4                  4S\4S\4/S\R"                  4S\R6                  4S\R"                  4S\R"                  4S\R"                  S4/S.rSrg )!rQ   i  z
Coldfusion statements
cfstatementcfsz//.*?\nz/\*(?:.|\n)*?\*/z\+\+|--z
[-+*/^&=!]z<=|>=|<|>|==zmod\bz"(eq|lt|gt|lte|gte|not|is|and|or)\bz\|\||&&z\?rZ  stringr)  \d+z(if|else|len|var|xml|default|break|switch|component|property|function|do|try|catch|in|continue|for|return|while|required|any|array|binary|boolean|component|date|guid|numeric|query|string|struct|uuid|case)\br   zD(application|session|client|cookie|super|this|variables|arguments)\bz([a-z_$][\w.]*)(\s*)(\()z[a-z_$][\w.]*z[()\[\]{};:,.\\]r   z""z#.+?#z[^"#]+r  r   )r   r	  rl   N)r   r   r   r   r   r   r   r   r   r   
IGNORECASEr   r   r   r"  r   r    r   r!   r   r   r   r   r   r   r   r   Interpr   r   rl   rt   rr   rQ   rQ     sR    DgGIIMME ( '"3"34"H%h'x 2H="H6==(+ v}}%VMNUW $W%5%56T]](dmmT;79t}}- +.TN3
8 FMM"v}}%&6==!6==&)
9#Frt   rQ   c                      \ rS rSrSrSrS/r/ r/ rS\	4\
" S5      S\	4/S\R                  S	4S
\4S\R                  S4S\" \R                  \" \5      \R                  5      4S\" \R                  \" \5      \R                  5      4/S\	4S\" \\" \5      \5      4S\R                  S4\
" S5      S\	4S\	4/S\R                  S4S\R                  S4S\R                  4/S.rSrg)ColdfusionMarkupLexeri  z
Coldfusion markup only

Coldfusioncfr  tagsz<[^<>]*z<!---	cfcommentz(?s)<!--.*?-->z<cfoutput.*?>cfoutputz((?s)(<cfscript.*?>)(.+?)(</cfscript.*?>)z(?s)(</?cf(?:component|include|if|else|elseif|loop|return|dbinfo|dump|abort|location|invoke|throw|file|savecontent|mailpart|mail|header|content|zip|image|lock|argument|try|catch|break|directory|http|set|function|param)\b)(.*?)((?<!\\)>)z[^#<]+z(#)(.*?)(#)z</cfoutput.*?>r   z(?s)<[^<>]*r  r   z--->z([^<-]|<(?!!---)|-(?!-->))+)r   r  r  r  rl   N)r   r   r   r   r   r   r   r   r   r"   r   r   r"  r   r   r   r   rQ   r   r   r   rl   rt   rr   r  r    s?    DfGII uFO
 w((+6(t||Z88dllE/$:DLLIKQ dllE/$:DLLI	K
 Xk53I&13 4 f5FOU#5M	
 w(('2g''0+W->->?
;"Frt   r  c                   D   ^  \ rS rSrSrSrS/rSS/rS/rU 4S jr	S	r
U =r$ )
rR   i%  z
Coldfusion markup in html
zColdfusion HTMLcfmz*.cfmz*.cfmlzapplication/x-coldfusionc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r  r   s     rr   ro   ColdfusionHtmlLexer.__init__.  s    $9EWErt   rl   r   r   r   r   r   r   r   r   r   ro   r   r   r   s   @rr   rR   rR   %  s4     DgG(#I+,IF Frt   rR   c                   @   ^  \ rS rSrSrSrS/rS/r/ rU 4S jr	Sr
U =r$ )rS   i2  z<
Coldfusion markup/script components

.. versionadded:: 2.0
zColdfusion CFCcfcz*.cfcc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   rR   rQ   r   s     rr   ro   ColdfusionCFCLexer.__init__=  s    ,oIIrt   rl   r  r   s   @rr   rS   rS   2  s.    
 DgG	IIJ Jrt   rS   c                   H   ^  \ rS rSrSrSrS/rS/rS/rU 4S jr	S r
S	rU =r$ )
rW   iA  z8
Lexer for Scalate Server Pages.

.. versionadded:: 1.4
zScalate Server Pagesspz*.sspzapplication/x-sspc                 :   > [         TU ]  " [        [        40 UD6  g r   r  r   s     rr   ro   SspLexer.__init__L  rN  rt   c                     Sn[         R                  " SU 5      (       a  US-  n[        U 5      (       a  US-  nSU ;   a  SU ;   a  US-  nU$ )Nr   zval \w+\s*:g333333?rg  ry   rz   r   )r   r   r%   r   s     rr   r   SspLexer.analyse_textO  sP    99^T**#IB$#IB4<DDL#IB	rt   rl   r  r   s   @rr   rW   rW   A  s4    
 !DgG	I$%I< rt   rW   c                   P    \ rS rSrSrS\S4S\4S\4/S\S4S	\" \5      4/S
.r	Sr
g)TeaTemplateRootLexeriZ  zo
Base for the `TeaTemplateLexer`. Yields `Token.Other` for area outside of
code blocks.

.. versionadded:: 1.5
r  r  r  r  rz   r   r  r  rl   N)r   r   r   r   r   r   r"   r   r   r   r   rl   rt   rr   r$  r$  Z  sL     w&u5M
 GV$!5#67
Frt   r$  c                   H   ^  \ rS rSrSrSrS/rS/rS/rU 4S jr	S r
S	rU =r$ )
rX   ip  zK
Lexer for `Tea Templates <http://teatrove.org/>`_.

.. versionadded:: 1.5
Teateaz*.teaz
text/x-teac                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r$  r   s     rr   ro   TeaTemplateLexer.__init__{  s    #7C7Crt   c                     [         R                  " U 5      S-
  n[        U 5      (       a  US-  nSU ;   a  SU ;   a  US-  nU$ r  )r   r   r%   r   s     rr   r   TeaTemplateLexer.analyse_text~  sF    &&t,t3$#IB4<DDL#IB	rt   rl   r  r   s   @rr   rX   rX   p  s4    
 DgG	IID rt   rX   c                   L   ^  \ rS rSrSrSrS/r/ SQr/ SQrU 4S jr	S r
S	rU =r$ )
rY   i  z
Subclass of the `LassoLexer` which highlights unhandled data with the
`HtmlLexer`.

Nested JavaScript and CSS is also highlighted.

.. versionadded:: 1.6
z
HTML+Lassoz
html+lasso)r   ra  rb  *.lasso*.lasso[89]*.incl*.inc*.las)ztext/html+lassozapplication/x-httpd-lassozapplication/x-httpd-lasso[89]c                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r   r   s     rr   ro   LassoHtmlLexer.__init__  s    J:':rt   c                 b    [         R                  " U 5      S-
  n[        U 5      (       a  US-  nU$ r  )r   r   r$   r   s     rr   r   LassoHtmlLexer.analyse_text  s0    $$T*T1%%#IB	rt   rl   r   r   s   @rr   rY   rY     s3     DnG3O2I; rt   rY   c                   J   ^  \ rS rSrSrSrS/r/ SQrS/rU 4S jr	S r
S	rU =r$ )
rZ   i  zj
Subclass of the `LassoLexer` which highlights unhandled data with the
`XmlLexer`.

.. versionadded:: 1.6
z	XML+Lassoz	xml+lasso)r   r-  r.  r/  r0  r1  zapplication/xml+lassoc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r   r   s     rr   ro   LassoXmlLexer.__init__  s    :99rt   c                 b    [         R                  " U 5      S-
  n[        U 5      (       a  US-  nU$ r   )r   r   r%   r   s     rr   r   LassoXmlLexer.analyse_text  s0    $$T*T1$#IB	rt   rl   r   r   s   @rr   rZ   rZ     s4     DmG3O()I: rt   rZ   c                   H   ^  \ rS rSrSrSrS/rS/rS/rU 4S jr	S r
S	rU =r$ )
r[   i  zj
Subclass of the `LassoLexer` which highlights unhandled data with the
`CssLexer`.

.. versionadded:: 1.6
z	CSS+Lassoz	css+lassor}  ztext/css+lassoc                 D   > SUS'   [         TU ]  " [        [        40 UD6  g NTrequiredelimiters)r   ro   r   r   r   s     rr   ro   LassoCssLexer.__init__  s"    '+#$:99rt   c                     [         R                  " U 5      S-
  n[        R                  " SU 5      (       a  US-  nSU ;   a  US-  nU$ )Nrx  z
\w+:[^;]+;r   zpadding:)r   r   r   r   r   s     rr   r   LassoCssLexer.analyse_text  sG    $$T*T199]D))#IB#IB	rt   rl   r   r   s   @rr   r[   r[     s4     DmGiO!"I: rt   r[   c                   L   ^  \ rS rSrSrSrSS/rS/r/ SQrU 4S jr	S	 r
S
rU =r$ )r\   i  zq
Subclass of the `LassoLexer` which highlights unhandled data with the
`JavascriptLexer`.

.. versionadded:: 1.6
zJavaScript+Lassozjavascript+lassozjs+lassors  )zapplication/x-javascript+lassoztext/x-javascript+lassoztext/javascript+lassoc                 D   > SUS'   [         TU ]  " [        [        40 UD6  g r=  )r   ro   r   r   r   s     rr   ro   LassoJavascriptLexer.__init__  s"    '+#$*@@rt   c                 8    [         R                  " U 5      S-
  nU$ rw  )r   r   r   s     rr   r   !LassoJavascriptLexer.analyse_text  s    $$T*T1	rt   rl   r   r   s   @rr   r\   r\     s7     D!:.GhO*IA rt   r\   c                      \ rS rSrSrSrSrS/rS\4S\	4S\
" \	R                  \5      S	4S
\
" \	R                  \R                  \R                  5      S	4S\
" \	R                  \5      S	4/S\4S\	R                  S4S\
" \\	R                  5      S4S\
" \R                  \5      4S\
" \\\5      4S\
" \\\R&                  5      4S\
" \\\5      S4\" S5      /S\4S\S4S\
" \\\R&                  \5      4S\
" \\\" \SS95      4S\R0                  4\" S5      /S\R&                  4S\R&                  4S\R&                  4/\" S5      S\R4                  4S \R6                  4S!\4/S".rS#rg$)%r]   i  z
Generic handlebars template lexer.

Highlights only the Handlebars template tags (stuff between `{{` and `}}`).
Everything else is left for a delegating lexer.

.. versionadded:: 2.0

Handlebarszhttps://handlebarsjs.com/
handlebarsr   z\{\{!.*\}\}z(\{\{\{)(\s*)r   z(\{\{)([#~/]+)([^\s}]*)(\{\{)(\s*)r   z\}\}\}r   z
(~?)(\}\})z([^\s}]+)(=)z(>)(\s*)(@partial-block)z(#?>)(\s*)([\w-]+)z(>)(\s*)(\()dynamic-partialgenericr   z(lookup)(\s+)(\.|this)(\s+)z(lookup)(\s+)(\S+)r   r   z[\w-]+z[()/@a-zA-Z][\w-]*z\.[\w-]+z(this\/|\.\/|(\.\.\/)+)[\w-]+r   r   r   )r   r   rK  r   rL  rl   N)r   r   r   r   r   r   r   r   r"   r   r   Specialr   r   r!   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   rl   rt   rr   r]   r]     s    D
%CnG u W% x>F (goov'7'79I9IJESXgoot<eD
  TN0HVW__=vF ht~~x@A )(7D'*JK"HWdDMM$JKhwkB  I!
& TNK(+Xgt6:mmT.K L"HWd-24z-J%L M&I
 #DMM2$--(-t}}=
 J +FMM:*FMM:'(.0
g<Frt   r]   c                   F   ^  \ rS rSrSrSrS/rSS/rSS/rU 4S	 jr	S
r
U =r$ )r^   i:  zm
Subclass of the `HandlebarsLexer` that highlights unlexed data with the
`HtmlLexer`.

.. versionadded:: 2.0
zHTML+Handlebarszhtml+handlebarsz*.handlebarsz*.hbsztext/html+handlebarsztext/x-handlebars-templatec                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r]   r   s     rr   ro   HandlebarsHtmlLexer.__init__G  s    O?w?rt   rl   r  r   s   @rr   r^   r^   :  s8     D !G)I')EFI@ @rt   r^   c                   H   ^  \ rS rSrSrSr/ SQr/ SQrSS/rU 4S jr	S	r
U =r$ )
r_   iK  z
Subclass of the `DjangoLexer` that highlights unlexed data with the
`YamlLexer`.

Commonly used in Saltstack salt states.

.. versionadded:: 2.0
z
YAML+Jinja)z
yaml+jinjasaltsls)z*.slsz	*.yaml.j2z*.yml.j2z*.yaml.jinja2z*.yml.jinja2ztext/x-yaml+jinjaz
text/x-slsc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r4   r   s     rr   ro   YamlJinjaLexer.__init__Z  r  rt   rl   r  r   s   @rr   r_   r_   K  s-     D+GSI$l3I< <rt   r_   c                      \ rS rSrSrSrSrS/rS/r0 SS\	4S\
" \\5      S	4S
\
" \\\" \SS95      S4S\	4/_S	S\R                   S4S\
" \R                   \5      \" SSS5      4S\
" \R                   \\5      S4S\
" \R&                  \\" \SS9\\5      S4S\
" \R&                  \\5      S4S\
" \R&                  \\5      S4S\
" \R                   S\\5      S4S\
" \R&                  S\\5      S4S\
" \R&                  \\" \SS9\\5      S 4S!\
" \R&                  \5      S"4/
_S\" S5      S#\S4S$\S%4/_S%\" S5      S#\S&4S'\
" \R*                  \\5      S(4/_S(S$\S4\" S)5      \" S*5      /_S\" S5      \" S5      S+\
" \" \SS9\\\\" \SS9\\5      4S,\4S-\R.                  4S.\
" \" \SS9\\R.                  \\" \SS95      4\" S5      \" S5      /_S/\" S5      \" S05      /_S1S2\
" \\S\5      S4S3\
" \\R.                  \5      S4/_S)S#\S4/_SS4\S&4/_S0S5\S4/_S6\" S5      S7\
" \R0                  \\5      4S8\
" \\\" \SS9\\5      4\" S95      \" S:5      \" S;5      S<\4/_S*\" S65      S=\	4/_S>\" S65      \" S5      S=\	4/_S"S4\S&4\" S*5      /_S S4\S&4\" S>5      /_S;S?\R2                  4/_S@\R4                  4SA\4/SB\R8                  4SC\R:                  4/SD\R>                  4SE\R@                  4/\" S;5      \" S95      \" S:5      \" S5      /SF\4/SG\
" \\\R&                  \\5      S&4S=\!4/S\	4SH\
" \\\R&                  \\5      S4S\	4/SI.Er"SJr#g)Kr`   i^  z4
Lexer for Liquid templates.

.. versionadded:: 2.0
liquidz.https://www.rubydoc.info/github/Shopify/liquidz*.liquidr   r   z
(\{%)(\s*)ztag-or-blockz(\{\{)(\s*)([^\s}]+)rL  rM  outputr   z(if|unless|elsif|case)(?=\s+)	conditionz(when)(\s+)zend-of-block
whitespacez(else)(\s*)(%\})r   z!(capture)(\s+)([^\s%]+)(\s*)(%\})r   z(comment)(\s*)(%\})r  z(raw)(\s*)(%\})rawz(end(case|unless|if))(\s*)(%\})Nz(end([^\s%]+))(\s*)(%\})z"(cycle)(\s+)(?:([^\s:]*)(:))?(\s*)zvariable-tag-markupz([^\s%]+)(\s*)z
tag-markup\}\}z\|filters)r   r   z([^\s|:]+)(:?)(\s*)zfilter-markupz
end-of-tagzdefault-param-markupz/([^\s=!><]+)(\s*)([=!><]=?)(\s*)(\S+)(\s*)(%\})z\b!z\bnot\bz*([\w.\'"]+)(\s+)(contains)(\s+)([\w.\'"]+)zgeneric-valuezend-at-whitespaceoperatorz(\s*)((=|!|>|<)=?)(\s*)z(\s*)(\bcontains\b)(\s*)z%\}r   zparam-markupz([^\s=:]+)(\s*)(=|:)z(\{\{)(\s*)([^\s}])(\s*)(\}\})r	  numberkeyword,r   zvariable-param-markupz\b(false|true)\br   z(?<=\w)\.(?=\w)z'[^']*'z"[^"]*"z\d+\.\d+r
  z[ \t]+z (\{%)(\s*)(endcomment)(\s*)(%\})z(\{%)(\s*)(endraw)(\s*)(%\}))r   r	  r`  rL  r[  r  r\  rl   )$r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Reservedr   r   r	  r   r   r   Wordr   r   r   r    r   r   r!   FloatIntegerr   r   r   rl   rt   rr   r`   r`   ^  s   
 D
:CjGI@tH[*=~N$k:uT9/MN DM	
@ 	-w/?/?MXg&6&6
CnlI>@ g&&
K@&J 2dhh
E$
,K +/068 $dhh
K8)Edhh
K8%A 0g&&j+FP(dhhj+>H 3dhh
D	2KM"$ : >M=
@Z 	L!k6*K+	
[@h 	L!k#34#dmm[*=P	
i@x 	K(L!*+
y@D 	N#L!?eD)4j( %i"@*!#$ X':eD)4j(-- %i"@BC IL!
E@h 	I'(
i@r 	'j(D*=vG(j(--<fF
s@@ 	k6*
A@H 	["23
I@P 	Z(
Q@Z 	L!$dnnj(;= /k:uT:/N +/0 HHI;
[@z 	N#4L!
{@D 	 N#J4L"
E@P 	["23*+
Q@Z 	["23+, 
[@f 	 '"2"23
g@p dmm,-
 ''
 &,,'V^^$
 IHHJ	
 
#
 1k:txx!#$46 7O	
 t,k:txx!#$*, DM
s@Frt   r`   c                      \ rS rSrSrSrS/rS/r\R                  \R                  -  rSrSrS\-   S	-   r\\-   rS
\4S\R$                  S4S\4S\" \R$                  \\\\R$                  \\R$                  \\\\R$                  5      4S\" \R$                  \\\\R$                  \\R$                  \\\\R$                  5      4S\-  \" \R$                  \\\\R.                  5      S4S\" \R$                  \\5      S4S\4/S\-  \" \\\R.                  5      4S\-  \" \\\\\R.                  5      4S\R2                  4S\4S\R4                  4\\R6                  4S\-   \R6                  4S\4S\R<                  4S\R>                  4S\4S\4/S\4S \" \\R$                  5      S!4\ " S"5      /S\4S#\" \\R$                  5      S!4\ " S"5      S$\!4/S%.r"S&r#g')(ra   i,  z
Twig template lexer.

It just highlights Twig code between the preprocessor directives,
other data is left untouched by the lexer.

.. versionadded:: 2.0
Twigtwigzapplication/x-twigz[\\\w-]|[^\x00-\x7f]z(?:[\\_a-z]|[^\x00-\x7f])z(?:z)*r   r   r   z\{\#.*?\#\}r   zL(\{%)(-?\s*)(verbatim)(\s*-?)(%\})(.*?)(\{%)(-?\s*)(endverbatim)(\s*-?)(%\})z(\{%%)(-?\s*)(filter)(\s+)(%s)r   r   r   z(\|)(\s*)(%s)z(is)(\s+)(not)?(\s*)(%s)z(?i)(true|false|none|null)\bz(in|not|and|b-and|or|b-or|b-xor|isif|elseif|else|importconstant|defined|divisibleby|empty|even|iterable|odd|sameasmatches|starts\s+with|ends\s+with)\bz(loop|block|parent)\bz\.z\.[0-9]+r   r   z4([{}()\[\]+\-*/,:~%]|\.\.|\?|:|\*\*|\/\/|!=|[><=]=?)r   r   r   r   r   r   r   )r   r   r   r   rl   N)$r   r   r   r   r   r   r   r   r   r   r   r   _ident_char_ident_begin
_ident_end_ident_innerr"   r   r   r   r   r   r   r   r   r   r   r   r!   r    r   r   r   r   r   r   rl   rt   rr   ra   ra   ,  s`    DhG%&IDD244KE *K/L+%,J*,L ugoou-W%1gootWdGOOW__dGToo'(
6gootWdGOOW__dGToo'( /=gootWdDMMJ +gootW5u>EN-
2 ,hdmm46(<7gtWdDMMBD,gnn=5 	
 &t||44==)\!4==1&!*FMM:*FMM:DhO'(.0%
, TNHT7??;VDJ
 TN8D'//:FCJ;	
g9Frt   ra   c                   B   ^  \ rS rSrSrSrS/rS/rS/rU 4S jr	Sr
U =r$ )	rb   i  zg
Subclass of the `TwigLexer` that highlights unlexed data with the
`HtmlLexer`.

.. versionadded:: 2.0
z	HTML+Twigz	html+twigz*.twigztext/html+twigc                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   ra   r   s     rr   ro   TwigHtmlLexer.__init__  r/  rt   rl   r  r   s   @rr   rb   rb     s/     DmG
I!"I: :rt   rb   c                      \ rS rSrSrSrSrS/rS\4S\	" \
R                  \5      S4S	\	" \\R                  \\\\5      S
4S\	" \\R                  \\5      4S\	" \\R                  \\\5      S
4S\	" \\R                  \5      4/S\4S\
R                  S4S\R$                  4S\R&                  4S\R(                  4S\4S\R,                  4S\R,                  4S\	" \\\\\\\\5      4/	S\S4S\S4S\S4/S.rSrg)rc   i  z
Generic angular2 template lexer.

Highlights only the Angular template tags (stuff between `{{` and `}}` and
special attributes: '(event)=', '[property]=', '[(twoWayBinding)]=').
Everything else is left for a delegating lexer.

.. versionadded:: 2.1
Angular2z(https://angular.io/guide/template-syntaxng2z	[^{([*#]+rJ  ngExpressionz&([([]+)([\w:.-]+)([\])]+)(\s*)(=)(\s*)r+  z([([]+)([\w:.-]+)([\])]+)(\s*)z([*#])([\w:.-]+)(\s*)(=)(\s*)z([*#])([\w:.-]+)(\s*)z\s+(\|\s+)?r]  r   z:?(true|false)r   r   r   z[a-zA-Z][\w-]*(\(.*\))?z\.[\w-]+(\(.*\))?z-(\?)(\s*)([^}\s]+)(\s*)(:)(\s*)([^}\s]+)(\s*)r(  r)  r*  )r   rt  r+  rl   N)r   r   r   r   r   r   r   r   r"   r   r   r   r   r   r   r   r   r    Booleanr   r   r!   r   r   r   rl   rt   rr   rc   rc     sr    D
4CgG 5! Xgoot<nM 7k4>>;hPTU /k4>>;EG .k4>>44H&R%k4>>48:!
* T"goov. /*FMM:*FMM:'(.0 (7!4==1 >hfdHdFDQS!
( ff%ff%(
Q-Frt   rc   c                   <   ^  \ rS rSrSrSrS/rS/rU 4S jrSr	U =r
$ )rd   i  zk
Subclass of the `Angular2Lexer` that highlights unlexed data with the
`HtmlLexer`.

.. versionadded:: 2.0
zHTML + Angular2zhtml+ng2z*.ng2c                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   rc   r   s     rr   ro   Angular2HtmlLexer.__init__  r   rt   rl   )r   r   r   r   r   r   r   r   ro   r   r   r   s   @rr   rd   rd     s'     DlG	I> >rt   rd   c                   D   ^  \ rS rSrSrSrS/r/ SQrU 4S jrS r	Sr
U =r$ )	re   i  z.
Templated SQL lexer.

.. versionadded:: 2.13
z	SQL+Jinjaz	sql+jinja)z*.sqlz*.sql.j2z*.sql.jinja2c                 :   > [         TU ]  " [        [        40 UD6  g r   )r   ro   r   r4   r   s     rr   ro   SqlJinjaLexer.__init__  r  rt   c                     Sn[         R                  " SU 5      (       a  US-  n[         R                  " SU 5      (       a  US-  n[         R                  " SU 5      (       a  US-  nU$ )Nr   z\{\{\s*ref\(.*\)\s*\}\}r   z\{\{\s*source\(.*\)\s*\}\}r   z\{%-?\s*macro \w+\(.*\)\s*-?%\}r   r   r   s     rr   r   SqlJinjaLexer.analyse_text  s]    99/66#IB992D99$JB997>>$JB	rt   rl   )r   r   r   r   r   r   r   r   ro   r   r   r   r   s   @rr   re   re     s*     DmG5I; rt   re   )wr   r   pygments.lexers.htmlr   r   pygments.lexers.javascriptr   r   pygments.lexers.cssr   pygments.lexers.phpr   pygments.lexers.pythonr	   pygments.lexers.perlr
   pygments.lexers.jvmr   r   pygments.lexers.datar   pygments.lexers.sqlr   pygments.lexerr   r   r   r   r   r   r   r   r   pygments.tokenr   r   r   r   r   r   r   r   r    r!   r"   r#   pygments.utilr$   r%   __all__r*   r/   rT   rU   rV   r4   r>   r?   r@   rB   rA   rC   rD   rE   rF   rG   rH   r;  rJ   rK   rL   rM   r;   rW  r:   r9   r=   r<   r+   r,   r-   r.   r&   r'   r(   r)   r0   r1   r2   r3   r5   r7   r6   r8   r  rI   rN   rO   rP   rQ   r  rR   rS   rW   r$  rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rl   rt   rr   <module>r     s   
 4 B ( ( . * 7 * (, , ,I I I I >.\u \~6* 6rPJ Pf> >  ,P* Pf,* ,^<o < ;_ ; BO B$;_ ; 4 4n@
 @F:O : 9? 9 @/ @$9? 9$
$ 
$): )X= =<o <C_ C( j  F=
 =@8o 8.7/ 705O 5(5_ 5" 2/ *2/ 2"2 2(? 4/ (2/ 2"+ +(o ._ *5_ 5$5O 5(o 0_ ,5_ 5&5O 52: 2 .7* 7r.o .&._ .&-j -`+J +\
F/ 
FJ J 2: , ._ 8O 0O 4? 0Jj JZ@/ @"<_ <&K* K\P
 Pf:O :"<J <~> > O rt   