o
    RhP                     @   s   d Z ddlZddlmZ ddlmZmZmZmZmZm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZmZmZ g dZG dd	 d	eZG d
d deZG dd deZdS )z
    pygments.lexers.textedit
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for languages related to text processing.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)bisect)
RegexLexerbygroupsdefaultincludethisusing)PythonLexer)	CommentKeywordNameNumberOperatorPunctuationStringText
Whitespace)AwkLexerSedLexerVimLexerc                   @   s   e Zd ZdZdZg dZdgZdgZdZdZ	de
fd	ejfged
dejdfde
dfedgde
dfgde
dfed
dedfdedfdefdedfdejdfdejfdejfdejfdejfdejfdejfdejfdejfgdZd S )!r   z
    For Awk scripts.
    Awk)awkgawkmawknawkz*.awkzapplication/x-awkz!https://en.wikipedia.org/wiki/AWKz1.5\s+#.*$commentsandwhitespacez(/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/\B#popz(?=/))r   badregexz\nz	^(?=\s|/)slashstartsregexz8\+\+|--|\|\||&&|in\b|\$|!?~|\?|:|(\*\*|[-<>+*%\^/!=|])=?z[{(\[;,]z[})\].]z3(break|continue|do|while|exit|for|if|else|return)\bz
function\bz(atan2|cos|exp|int|log|rand|sin|sqrt|srand|gensub|gsub|index|length|match|split|sprintf|sub|substr|tolower|toupper|close|fflush|getline|next|nextfile|print|printf|strftime|systime|delete|system)\bz(ARGC|ARGIND|ARGV|BEGIN|CONVFMT|ENVIRON|END|ERRNO|FIELDWIDTHS|FILENAME|FNR|FS|IGNORECASE|NF|NR|OFMT|OFS|ORFS|RLENGTH|RS|RSTART|RT|SUBSEP)\bz[$a-zA-Z_]\w*z%[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?z0x[0-9a-fA-F]+[0-9]+z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*')r   r    r   rootN)__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedr   r
   Singler   r   Regexr   r   r   r   DeclarationReservedr   BuiltinOtherr   FloatHexIntegerDoubletokens r8   r8   Z/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/pygments/lexers/textedit.pyr      sZ    

r   c                   @   s  e Zd ZdZdZg dZddgZdgZdZdZ	e
jZd	Zd
defdejfdejfdefdefdefdeeejfdeeejfdeeejfde d eeejefde d eedejefde d e d eeeejeejefde d e d eeeejeejeefgiZdS )r   z%
    Lexer for Sed script files.
    Sed)sedgsedssedz*.sedz	*.[gs]sedz
text/x-sedz!https://en.wikipedia.org/wiki/Sed z.((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)r"   r   r   r!   z\$z[{};,!]z[dDFgGhHlnNpPqQxz=]z([berRtTvwW:])([^;\n]*)z"([aci])((?:.*?\\\n)*(?:.*?[^\\]$))z([qQ])([0-9]*)z(/)z(\\(.))z(\2)Nz(y)(.)z(s)(.)z(\2)((?:[gpeIiMm]|[0-9])*))r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   re	MULTILINEflags_inside_delimsr   r
   r-   r   r5   r   r   r   r   r   r6   r.   r7   r8   r8   r8   r9   r   L   sD    
r   c                   @   s  e Zd ZdZdZdgZg dZdgZdZdZ	e
jZdZd	d
e d eeeeeeeeeeefd
e d eeeeeeefdefdefdejfdejfdejfdefdefdejfdefdefdefdejfdejfdefgiZ dd Z!dd Z"dd  Z#d!S )"r   z&
    Lexer for VimL script files.
    VimLvim)	z*.vimz.vimrcz.exrcz.gvimrc_vimrc_exrc_gvimrcvimrcgvimrcz
text/x-vimzhttps://www.vim.orgz0.8zpy(?:t(?:h(?:o(?:n)?)?)?)?r"   z^([ \t:]*)(z()([ \t]*)(<<)([ \t]*)(.*)((?:\n|.)*)(\6)z)([ \t])(.*)z^\s*".*z[ \t]+z!/[^/\\\n]*(?:\\[\s\S][^/\\\n]*)*/z!"[^"\\\n]*(?:\\[\s\S][^"\\\n]*)*"z'[^\n']*(?:''[^\n']*)*'z(?<=\s)"[^\-:.%#=*].*z-?\d+z#[0-9a-f]{6}z^:z[()<>+=!|,~-]z7\b(let|if|else|endif|elseif|fun|function|endfunction)\bz+\b(NONE|bold|italic|underline|dark|light)\bz\b\w+\b.c                 K   s<   ddl m}m}m} || _|| _|| _tj| fi | d S )Nr   )autocommandoption)	pygments.lexers._vim_builtinsrK   rL   rM   _cmd_opt_autr   __init__)selfoptionsrK   rL   rM   r8   r8   r9   rR      s
   zVimLexer.__init__c                 C   s   t ||f}|dkr2||d  d |dt||d  d  kr2||d  d dt| |kr2dS |t|k rX|| d |dt|| d  koW|| d dt| |kS dS )a  
        It's kind of difficult to decide if something might be a keyword
        in VimL because it allows you to abbreviate them.  In fact,
        'ab[breviate]' is a good example.  :ab, :abbre, or :abbreviate are
        valid ways to call it so rather than making really awful regexps
        like::

            \bab(?:b(?:r(?:e(?:v(?:i(?:a(?:t(?:e)?)?)?)?)?)?)?)?\b

        we match `\b\w+\b` and then call is_in() on those tokens.  See
        `scripts/get_vimkw.py` for how the lists are extracted.
        r      NTF)r   len)rS   wmappingpr8   r8   r9   is_in   s   , $zVimLexer.is_inc                 c   s    t | |D ];\}}}|tju r<| || jr|t|fV  q| || js-| || jr5|tj	|fV  q|t
|fV  q|||fV  qd S )N)r   get_tokens_unprocessedr   r2   rZ   rO   r   rP   rQ   r1   r   )rS   textindextokenvaluer8   r8   r9   r[      s   

zVimLexer.get_tokens_unprocessedN)$r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r?   r@   rA   _pythonr   r   r   r   r   r   r	   r
   r   r.   r6   r-   r   r4   r   r   r1   r2   r7   rR   rZ   r[   r8   r8   r8   r9   r   q   sP    

r   )r&   r?   r   pygments.lexerr   r   r   r   r   r   pygments.lexers.pythonr	   pygments.tokenr
   r   r   r   r   r   r   r   r   __all__r   r   r   r8   r8   r8   r9   <module>   s    
 ,6%