o
    \h<                     @   s   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	 d	eZG d
d deZG dd deZG dd deZG dd deZG dd deZdS )z
    pygments.lexers.textfmts
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for various text formats.

    :copyright: Copyright 2006-2025 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                
   @   s   e Zd ZdZdZdgZdgZdgZdZdZ	e
je
jB ZdZd	efd
e d eejejfd
e d eejejdfd
e d eejeejfd
e d 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-irclogz1https://en.wikipedia.org/wiki/Internet_Relay_Chat af  
        (
          # 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urlversion_addedreVERBOSE	MULTILINEflags	timestampr	   r   Preprocr   Tagr   r   Insertedr   r   	Attributetokens r3   r3   [/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/pygments/lexers/textfmts.pyr      s6    



r   c                   @   s   e Zd ZdZdZddgZddgZg dZdZ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   z*
    Lexer for Gettext catalog files.
    zGettext Catalogpotpoz*.potz*.po)zapplication/x-gettextztext/x-gettextztext/gettextz$https://www.gnu.org/software/gettextz0.9r   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'   r(   r   TypeDeclarationr	   Singler   r   r   PropertyVariabler   r   Integerr2   r3   r3   r3   r4   r   X   s0    r   c                   @   s   e Zd ZdZdZdgZdZdZej	Z
dddZd	d
 Zdd Zd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d ZdS )r   z"
    Lexer for HTTP sessions.
    HTTPhttpzhttps://httpwg.org/specsz1.5r   c                 C   s   d| _ t| ||S )zReset the content-type state.N)content_typer   get_tokens_unprocessed)selftextstackr3   r3   r4   rA      s   z HttpLexer.get_tokens_unprocessedc                 c   s    | d dkr#| 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findr@   startr   r1   r   r
   r   )rB   matchr@   r3   r3   r4   header_callback   s   zHttpLexer.header_callbackc                 c   sN    | dt|dfV  | dt|dfV  | dt|dfV  d S )NrE   rH   rI   )rP   r   rL   r   )rB   rQ   r3   r3   r4   continuous_header_callback   s   z$HttpLexer.continuous_header_callbackc              	   c   s    t | dd }| }| }|rTddlm} |g}d|v r*tdd|}|| |D ]'}z||}	W n	 ty=   Y q,w |		|D ]\}
}}||
 ||fV  qC d S |t
|fV  d S )Nr@   r   )get_lexer_for_mimetype+z^(.*)/.*\+(.*)$z\1/\2)getattrrL   rP   pygments.lexersrT   r)   subappendr   rA   r   )rB   rQ   r@   contentoffsetrT   possible_lexer_mimetypesgeneral_typeilexeridxtokenvaluer3   r3   r4   content_callback   s,   
zHttpLexer.content_callbackzL([a-zA-Z][-_a-zA-Z]+)( +)([^ ]+)( +)(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?\nrZ   z.+)r   rd   rZ   c                    s   t  fdddD S )Nc                 3   s     | ]}t | d uV  qd S )N)r)   search).0patternrC   r3   r4   	<genexpr>   s
    
z)HttpLexer.analyse_text.<locals>.<genexpr>)zM^([a-zA-Z][-_a-zA-Z]+)( +)([^ ]+)( +)(HTTP)(/)(1\.[01]|2(?:\.0)?|3)(\r?\n|\Z)zG^(HTTP)(/)(1\.[01]|2(?:\.0)?|3)( +)(\d{3})(?:( +)([^\r\n]*))?(\r?\n|\Z))anyrh   r3   rh   r4   analyse_text   s   zHttpLexer.analyse_textN)r?   )r   r    r!   r"   r#   r$   r'   r(   r)   DOTALLr,   rA   rR   rS   rc   r   r   Functionr   	Namespacer   Reservedr
   r   	Exceptionr2   rk   r3   r3   r3   r4   r   t   s@    

r   c                
   @   s2  e Zd ZdZdZdZdgZd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 d Zed e d Zde d e d 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   z.
    Lexer for Todo.txt todo list format.
    Todotxtzhttp://todotxt.com/todotxtz2.0z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   ru   rv   N) r   r    r!   r"   r#   r'   r$   r(   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   r2   r3   r3   r3   r4   r      sn    

r   c                   @   s2  e Zd ZdZdZdZdgZdZd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$d% Zd&d' Zd(S ))r   z
    For Notmuch email text format.

    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/notmuchz2.5c                 c   s^    | d}z| jrt| j}nt| }W n ty$   td}Y nw ||E d H  d S )NrE   rC   )rL   
body_lexerr   r   rN   r   rA   )rB   rQ   coder_   r3   r3   r4   _highlight_codeD  s   
zNotmuchLexer._highlight_codez\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                 C   s   |  drdS dS )Nz	message{g      ?g        )
startswithrh   r3   r3   r4   rk   ~  s   zNotmuchLexer.analyse_textc                 K   s$   | dd | _tj| fi | d S )Nr   )getr   r   __init__)rB   optionsr3   r3   r4   r     s   zNotmuchLexer.__init__N)r   r    r!   r"   r#   r'   r$   r(   r   r   r   r   r1   r   r   r<   r   r   Strongr   r/   r   r	   r2   rk   r   r3   r3   r3   r4   r   4  sf    

	
	-r   c                
   @   s   e Zd ZdZdZddgZddgZdZd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   z0
    For Linux Kernel log ("dmesg") output.
    z
Kernel logkmsgdmesgz*.kmsgz*.dmesgz#https://fr.wikipedia.org/wiki/Dmesgz2.6z^[^:]+: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   r   r}   r2   r3   r3   r3   r4   r     sH    



r   )r"   r)   rW   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   r3   r3   r3   r4   <module>   s    
0A\dR