§
    £E±cX;  ã                   ó&  — d Z ddlZddlmZmZ ddlmZmZmZm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZ ddlmZ g d¢Z G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )zÕ
    pygments.lexers.textfmts
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for various text formats.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Úguess_lexerÚget_lexer_by_name)Ú
RegexLexerÚbygroupsÚdefaultÚinclude)
ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚGenericÚLiteralÚPunctuation)ÚClassNotFound)ÚIrcLogsLexerÚTodotxtLexerÚ	HttpLexerÚGettextLexerÚNotmuchLexerÚKernelLogLexerc                   ó^  — e Zd ZdZdZdgZdgZdgZej	        ej
        z  ZdZdefdez   d	z    eej        ej        ¦  «        fdez   d
z    eej        ej        ¦  «        dfdez   dz    eej        eej        ¦  «        fdez   dz    eej        eee¦  «        fdefgdej        fdedfgdœZdS )r   zD
    Lexer for IRC logs in *irssi*, *xchat* or *weechat* style.
    zIRC logsÚircz*.weechatlogztext/x-irclogaf  
        (
          # irssi / xchat and others
          (?: \[|\()?                  # Opening bracket or paren for the timestamp
            (?:                        # Timestamp
                (?: (?:\d{1,4} [-/])*  # Date as - or /-separated groups of digits
                    (?:\d{1,4})
                 [T ])?                # Date/time separator: T or space
                (?: \d?\d [:.])*       # Time as :/.-separated groups of 1 or 2 digits
                    (?: \d?\d)
            )
          (?: \]|\))?\s+               # Closing bracket or paren for the timestamp
        |
          # weechat
          \d{4}\s\w{3}\s\d{2}\s        # Date
          \d{2}:\d{2}:\d{2}\s+         # Time + Whitespace
        |
          # xchat
          \w{3}\s\d{2}\s               # Date
          \d{2}:\d{2}:\d{2}\s+         # Time + Whitespace
        )?
    z^\*\*\*\*(.*)\*\*\*\*$ú^z(\s*<[^>]*>\s*)$z/
                (\s*<.*?>\s*)          # Nick Úmsgzo
                (\s*[*]\s+)            # Star
                (\S+\s+.*?\n)          # Nick + rest of message zÅ
                (\s*(?:\*{3}|<?-[!@=P]?->?)\s*)  # Star(s) or symbols
                (\S+\s+)                     # Nick + Space
                (.*?\n)                         # Rest of message z^.*?\nz
\S+:(?!//)z.*\nú#pop)Úrootr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚreÚVERBOSEÚ	MULTILINEÚflagsÚ	timestampr
   r   ÚPreprocr   ÚTagr   r   ÚInsertedr   r	   Ú	AttributeÚtokens© ó    ú:/usr/lib/python3/dist-packages/pygments/lexers/textfmts.pyr   r      s=  € € € € € ðð ð €DØˆg€GØÐ €IØ Ð!€IàŒJ˜œÑ%€Eð€Ið2 '¨Ð0à�9‰_Ð2Ñ2°H°H¸W¼_ÈdÌhÑ4WÔ4WÐXà�9‰_ð  2ñ 2àˆX�g”o t¤xÑ0Ô0°%ð9ð �9‰_ð  Dñ Dð ˆX�g”o w°Ô0@ÑAÔAðCð
 �9‰_ð  Fñ Fð ˆX�g”o w°¸Ñ@Ô@ð	Bð
 ˜Ðð)
ð. ˜DœNÐ+Ø�d˜FÐ#ð
ð/ð €F€F€Fr3   r   c                   óö   — e Zd ZdZdZddgZddgZg d¢Zdd	ej	        fd
ej
        fdej        fd eeej        e¦  «        fdefd eej        ee¦  «        fd eej        ej        ej        ee¦  «        fgiZdS )r   zE
    Lexer for Gettext catalog files.

    .. versionadded:: 0.9
    zGettext CatalogÚpotÚpoz*.potz*.po)zapplication/x-gettextztext/x-gettextztext/gettextr   z	^#,\s.*?$z	^#:\s.*?$z^(#|#\.\s|#\|\s|#~\s|#\s).*$z^(")([A-Za-z-]+:)(.*")$z^".*"$z0^(msgid|msgid_plural|msgstr|msgctxt)(\s+)(".*")$z^(msgstr\[)(\d)(\])(\s+)(".*")$N)r    r!   r"   r#   r$   r%   r&   r'   r   ÚTypeÚDeclarationr
   ÚSingler   r   r   ÚPropertyÚVariabler	   r   ÚIntegerr1   r2   r3   r4   r   r   V   sÏ   € € € € € ðð ð
 €DØ�dˆm€GØ˜&Ð!€IØKÐKÐK€Ið 	Ø˜7œ<Ð(Ø˜7Ô.Ð/à,¨g¬nÐ=Ø'ØˆX�f˜dœm¨VÑ4Ô4ð6à˜ÐØ@ØˆX�d”m T¨6Ñ2Ô2ð4à/ØˆX�d”m V¤^°T´]ÀDÈ&ÑQÔQðSð
ð€F€F€Fr3   r   c                   óò   — e Zd ZdZdZdgZej        Zdd„Z	d„ Z
d„ Zd„ Zd	 eej        eej        eej        eee¦  «        d
fd eej        eeeeeej        e¦  «        d
fgde
fdefdedfgdefgdœZd„ ZdS )r   z=
    Lexer for HTTP sessions.

    .. versionadded:: 1.5
    ÚHTTPÚhttp©r   c                 ó<   — d| _         t          j        | ||¦  «        S )zReset the content-type state.N)Úcontent_typer   Úget_tokens_unprocessed)ÚselfÚtextÚstacks      r4   rD   z HttpLexer.get_tokens_unprocessed~   s   € à ˆÔÝÔ0°°t¸UÑCÔCÐCr3   c              #   ó„  K  — |                      d¦  «                             ¦   «         dk    ra|                      d¦  «                             ¦   «         }d|v r/|d |                     d¦  «        …                              ¦   «         }|| _        |                     d¦  «        t          j        |                      d¦  «        fV — |                     d¦  «        t          |                      d¦  «        fV — |                     d¦  «        t          |                      d¦  «        fV — |                     d¦  «        t          |                      d¦  «        fV — |                     d¦  «        t          |                      d¦  «        fV — |                     d¦  «        t          |                      d¦  «        fV — d S )	Né   zcontent-typeé   ú;é   é   é   é   )ÚgroupÚlowerÚstripÚfindrC   Ústartr   r0   r	   r   r   )rE   ÚmatchrC   s      r4   Úheader_callbackzHttpLexer.header_callbackƒ   sq  è è € Ø�;Š;�q‰>Œ>×ÒÑ!Ô! ^Ò3Ð3Ø Ÿ;š; q™>œ>×/Ò/Ñ1Ô1ˆLØ�lÐ"Ð"Ø+Ð,C¨\×->Ò->¸sÑ-CÔ-CÐ,CÔD×JÒJÑLÔL�Ø ,ˆDÔØ�kŠk˜!‰nŒn�dœn¨e¯kªk¸!©n¬nÐ<Ð<Ð<Ð<Ø�kŠk˜!‰nŒn�d E§K¢K°¡N¤NÐ2Ð2Ð2Ð2Ø�kŠk˜!‰nŒn�h¨¯ª°A©¬Ð6Ð6Ð6Ð6Ø�kŠk˜!‰nŒn�d E§K¢K°¡N¤NÐ2Ð2Ð2Ð2Ø�kŠk˜!‰nŒn�g u§{¢{°1¡~¤~Ð5Ð5Ð5Ð5Ø�kŠk˜!‰nŒn�d E§K¢K°¡N¤NÐ2Ð2Ð2Ð2Ð2Ð2r3   c              #   ó6  K  — |                      d¦  «        t          |                     d¦  «        fV — |                      d¦  «        t          |                     d¦  «        fV — |                      d¦  «        t          |                     d¦  «        fV — d S )NrI   rL   rM   )rT   r	   rP   r   )rE   rU   s     r4   Úcontinuous_header_callbackz$HttpLexer.continuous_header_callback�   s�   è è € Ø�kŠk˜!‰nŒn�d E§K¢K°¡N¤NÐ2Ð2Ð2Ð2Ø�kŠk˜!‰nŒn�g u§{¢{°1¡~¤~Ð5Ð5Ð5Ð5Ø�kŠk˜!‰nŒn�d E§K¢K°¡N¤NÐ2Ð2Ð2Ð2Ð2Ð2r3   c              #   óš  K  — t          | dd ¦  «        }|                     ¦   «         }|                     ¦   «         }|r�ddlm} |g}d|v r+t          j        dd|¦  «        }|                     |¦  «         |D ]F}	  ||¦  «        }	|	                     |¦  «        D ]\  }
}}||
z   ||fV — Œ d S # t          $ r Y ŒCw xY w|t          |fV — d S )NrC   r   )Úget_lexer_for_mimetypeú+z^(.*)/.*\+(.*)$z\1/\2)ÚgetattrrP   rT   Úpygments.lexersrZ   r(   ÚsubÚappendrD   r   r	   )rE   rU   rC   ÚcontentÚoffsetrZ   Úpossible_lexer_mimetypesÚgeneral_typeÚiÚlexerÚidxÚtokenÚvalues                r4   Úcontent_callbackzHttpLexer.content_callback•   s5  è è € Ý˜t ^°TÑ:Ô:ˆØ—+’+‘-”-ˆØ—’‘”ˆØð 	Ø>Ð>Ð>Ð>Ð>Ð>Ø(4 ~Ð$Ø�lÐ"Ð"õ  "œvÐ&8¸(Ø&2ñ 4ô  4�à(×/Ò/°Ñ=Ô=Ð=à-ð ð �ðØ2Ð2°1Ñ5Ô5�Eð .3×-IÒ-IÈ'Ñ-RÔ-Rð 9ð 9Ñ)˜˜U EØ$ s™l¨E°5Ð8Ð8Ð8Ð8Ð8Ø�F�Føõ %ð ð ð Ø�Dðøøøð •d˜GÐ#Ð#Ð#Ð#Ð#Ð#s   Á;B/Â/
B<Â;B<zm(GET|POST|PUT|DELETE|HEAD|OPTIONS|TRACE|PATCH|CONNECT)( +)([^ ]+)( +)(HTTP)(/)(1\.[01]|2(?:\.0)?|3)(\r?\n|\Z)ÚheaderszF(HTTP)(/)(1\.[01]|2(?:\.0)?|3)( +)(\d{3})(?:( +)([^\r\n]*))?(\r?\n|\Z)z(([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|\Z)z([\t ]+)([^\r\n]+)(\r?\n|\Z)z\r?\nr`   z.+)r   rj   r`   c                 ó,   — |                       d¦  «        S )N)	zGET /zPOST /zPUT /zDELETE /zHEAD /z	OPTIONS /zTRACE /zPATCH /zCONNECT ©Ú
startswith©rF   s    r4   Úanalyse_textzHttpLexer.analyse_textÄ   s!   € Ø�Šð  Oñ Pô Pð 	Pr3   N)rA   )r    r!   r"   r#   r$   r%   r(   ÚDOTALLr+   rD   rV   rX   ri   r   r   ÚFunctionr	   Ú	Namespacer   ÚReservedr   r   Ú	Exceptionr1   ro   r2   r3   r4   r   r   r   s8  € € € € € ðð ð €DØˆh€GàŒI€EðDð Dð Dð Dð
3ð 3ð 3ð3ð 3ð 3ð
$ð $ð $ð69àˆX�d”m T¨4¬>¸4ØÔ&¨°&¸$ñ@ô @àð	ð
 WØˆX�gÔ&¨°&¸$ÀÈØ”n dñ,ô ,àðð

ð 9¸/ÐJØ,Ð.HÐIØ�t˜YÐ'ð
ð Ð$Ð%ð
ð#ð €Fð,Pð Pð Pð Pð Pr3   r   c            
       ó„  — e Zd ZdZdZdZdgZddgZdgZe	Z
eZej        Zej        Zej        ZeZdZd	Zd
ZdZdez   dz   Zedz   ez   dz   Zdez   dz   ez   dz   Ze ee
ee
e¦  «        dfe ee
e¦  «        dfe eeee¦  «        dfeedfeedfeedfeedfdedfgde
dfeefeefde
fde
fgdedfeefeefdefdefgdœZdS )r   zI
    Lexer for Todo.txt todo list format.

    .. versionadded:: 2.0
    ÚTodotxtzhttp://todotxt.com/Útodotxtztodo.txtz	*.todotxtztext/x-todoz\d{4,}-\d{2}-\d{2}z	\([A-Z]\)z\+\S+z@\S+z(x )(ú)z( )(ú(z)( )(ÚcompleteÚ
incompletez\S+z\s*\nr   z\s+)r   rz   r{   N)r    r!   r"   r#   r$   Úurlr%   r&   r'   r   ÚCompleteTaskTextr	   ÚIncompleteTaskTextr   ÚHeadingÚPriorityÚ
SubheadingÚDateÚErrorÚProjectr   ÚContextÚ
date_regexÚpriority_regexÚproject_regexÚcontext_regexÚcomplete_one_date_regexÚcomplete_two_date_regexÚpriority_date_regexr   r1   r2   r3   r4   r   r   É   sØ  € € € € € ðð ð €DØ
€CØˆk€Gð ˜[Ð)€IØ�€Ið  ÐØÐð Œ€HàÔ€Dð Œm€GØ€Gð '€JØ!€NØ€MØ€Mð '¨Ñ3°dÑ:ÐØ6¸Ñ@Ø)ñ *Ø,0ñ 1Ðà Ñ/°(Ñ:¸ZÑGÈ$ÑNÐð % h hÐ/?ÀØ/?Àñ'Gô 'Gàðð % h hÐ/?ÀÑ&FÔ&FØðð
 ! ( (¨8Ð5GÈÑ"NÔ"NØðð ˜X |Ð4à˜˜|Ð,à˜G \Ð2à˜G \Ð2àÐ'¨Ð6ð/
ð: Ð'¨Ð0à˜GÐ$Ø˜GÐ$àÐ%Ð&àÐ%Ð&ð

ð Ð)¨6Ð2à˜GÐ$Ø˜GÐ$àÐ'Ð(àÐ'Ð(ð

ðU5ð 5€F€F€Fr3   r   c                   ó  — e Zd ZdZdZdZdgZd„ Zdedfgd e	e
j        e¦  «        fd	 e	e
j        ej        ¦  «        fd
 e	e
j        e¦  «        f ed¦  «        gdedfdedfdedfgdedfd e	e
j        e¦  «        fd e	ej        ee
j        ¦  «        fgdedfdedfdedfgd e	e
j        ej        ¦  «        fd e	ee
j        e¦  «        fd e	ee
j        e¦  «        f ed¦  «        gdedfdedfdefd efgd!œZd"„ Zd#„ Zd$S )%r   a  
    For Notmuch email text format.

    .. versionadded:: 2.5

    Additional options accepted:

    `body_lexer`
        If given, highlight the contents of the message body with the specified
        lexer, else guess it according to the body content (default: ``None``).
    ÚNotmuchzhttps://notmuchmail.org/Únotmuchc              #   ó&  K  — |                      d¦  «        }	 | j        rt          | j        ¦  «        }n!t          |                     ¦   «         ¦  «        }n# t
          $ r t          d¦  «        }Y nw xY w|                     |¦  «        E d {V —† d S )NrI   rF   )rP   Ú
body_lexerr   r   rR   r   rD   )rE   rU   Úcodere   s       r4   Ú_highlight_codezNotmuchLexer._highlight_code?  s¥   è è € Ø�{Š{˜1‰~Œ~ˆð	.ØŒð 2Ý)¨$¬/Ñ:Ô:��å# D§J¢J¡L¤LÑ1Ô1�øøÝð 	.ð 	.ð 	.Ý% fÑ-Ô-ˆEˆEˆEð	.øøøð ×/Ò/°Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5s   ™=A ÁA3Á2A3z\fmessage\{\s*)Úmessageúmessage-attrz(\s*id:\s*)(\S+)z&(\s*(?:depth|match|excluded):\s*)(\d+)z(\s*filename:\s*)(.+\n)r   z\fmessage\}\nz\fheader\{\nÚheaderz
\fbody\{\nÚbodyz\fheader\}\nz'((?:Subject|From|To|Cc|Date):\s*)(.*\n)z(.*)(\s*\(.*\))(\s*\(.*\)\n)z
\fpart\{\nÚpartz\f(part|attachment)\{\s*)r˜   ú	part-attrz
\fbody\}\nz(ID:\s*)(\d+)z*(,\s*)((?:Filename|Content-id):\s*)([^,]+)z(,\s*)(Content-type:\s*)(.+\n)z\f(?:part|attachment)\}\nz\f(?:part|attachment)\{\s*)z#pushr™   z^Non-text part: .*\nz&(?s)(.*?(?=\f(?:part|attachment)\}\n)))r   r•   r”   r–   r—   r™   r˜   c                 ó4   — |                       d¦  «        rdndS )Nz	message{g      ð?g        rl   rn   s    r4   ro   zNotmuchLexer.analyse_texty  s   € Ø—o’o lÑ3Ô3Ð<ˆsˆs¸Ð<r3   c                 ó`   — |                      dd ¦  «        | _        t          j        | fi |¤Ž d S )Nr‘   )Úgetr‘   r   Ú__init__)rE   Úoptionss     r4   r�   zNotmuchLexer.__init__|  s6   € Ø!Ÿ+š+ l°DÑ9Ô9ˆŒÝÔ˜DÐ,Ð, GÐ,Ð,Ð,Ð,Ð,r3   N)r    r!   r"   r#   r$   r|   r%   r“   r   r   r   r0   r   r   r=   r   r   ÚStrongr   r.   r   r
   r1   ro   r�   r2   r3   r4   r   r   .  sø  € € € € € ð
ð 
ð €DØ
$€CØˆk€Gð6ð 6ð 6ð  Ð)DÐEð
ð ! ( (¨4¬>¸6Ñ"BÔ"BÐCØ6ØˆX�d”n f¤nÑ5Ô5ð7à'ØˆX�d”n fÑ-Ô-ð/àˆG�F‰OŒOð
ð ˜w¨Ð/Ø˜g xÐ0Ø˜G VÐ,ð
ð ˜g vÐ.Ø7ØˆX�d”n fÑ-Ô-ð/à,ØˆX�g”n g¨t¬xÑ8Ô8ð:ð	
ð ˜G VÐ,Ø(¨'Ð3HÐIØ˜G VÐ,ð
ð ˜x˜x¨¬¸¼ÑGÔGÐHØ:ØˆX�k 4¤>°6Ñ:Ô:ð<à.ØˆX�k 4¤>°6Ñ:Ô:ð<àˆG�F‰OŒOð
ð *¨7°FÐ;Ø*¨GÐ5KÐLØ$ gÐ.Ø6¸ÐHð	
ðK+ð +€FðZ=ð =ð =ð-ð -ð -ð -ð -r3   r   c            
       ó.  — e Zd ZdZdZddgZddgZdedfd	ed
fdedfdedfdedfdedfdedfgdedfdedf ed
¦  «        gde	fde
fdedfg ed¦  «        dedfg ed¦  «        dedfg ed¦  «        dej        dfg ed¦  «        dej        dfgdœZdS )r   zK
    For Linux Kernel log ("dmesg") output.

    .. versionadded:: 2.6
    z
Kernel logÚkmsgÚdmesgz*.kmsgz*.dmesgz^[^:]+:debug : (?=\[)Údebugz^[^:]+:info  : (?=\[)Úinfoz^[^:]+:warn  : (?=\[)Úwarnz^[^:]+:notice: (?=\[)z^[^:]+:err   : (?=\[)Úerrorz^[^:]+:crit  : (?=\[)z^(?=\[)Úunknownz(^(?=.+(warning|notice|audit|deprecated))z ^(?=.+(error|critical|fail|Bug))z\[[0-9. ]+\] z(?<=\] ).+?:z\nr   Úbasez.+\n)r   r§   r¨   r£   r¤   r¥   r¦   N)r    r!   r"   r#   r$   r%   r&   r	   r   r   r   r   r
   r   rŸ   rƒ   r1   r2   r3   r4   r   r   �  sH  € € € € € ðð ð
 €DØ�wÐ€GØ˜9Ð%€Ið & t¨WÐ5Ø% t¨VÐ4Ø% t¨VÐ4Ø% t¨VÐ4Ø% t¨WÐ5Ø% t¨WÐ5Ø˜˜yÐ)ð
ð 9¸$ÀÐGØ0°$¸Ð@ØˆG�F‰OŒOð
ð ˜vÐ&Ø˜gÐ&Ø�D˜&Ð!ð
ð ˆG�F‰OŒOØ�g˜vÐ&ð
ð
 ˆG�F‰OŒOØ�d˜FÐ#ð
ð
 ˆG�F‰OŒOØ�g”n fÐ-ð
ð
 ˆG�F‰OŒOØ�g”m VÐ,ð
ðA$ð $€F€F€Fr3   r   )r#   r(   r]   r   r   Úpygments.lexerr   r   r   r   Úpygments.tokenr	   r
   r   r   r   r   r   r   r   r   Úpygments.utilr   Ú__all__r   r   r   r   r   r   r2   r3   r4   ú<module>r­      s  ððð ð 
€	€	€	à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Að*ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *à 'Ð 'Ð 'Ð 'Ð 'Ð 'ð-ð -ð -€ð<ð <ð <ð <ð <�:ñ <ô <ð <ð~ð ð ð ð �:ñ ô ð ð8TPð TPð TPð TPð TP�
ñ TPô TPð TPðnbð bð bð bð b�:ñ bô bð bðJP-ð P-ð P-ð P-ð P-�:ñ P-ô P-ð P-ðf.ð .ð .ð .ð .�Zñ .ô .ð .ð .ð .r3   