o
    Ñ­j§<  ã                   @   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-present 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   úU/var/www/html/CropPilot/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