o a@sdZddlZddlmZddlmZmZmZmZmZm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZmZgdZGdd d eZGd d d eZGd d d eZdS)z pygments.lexers.textedit ~~~~~~~~~~~~~~~~~~~~~~~~ Lexers for languages related to text processing. :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. N)bisect) RegexLexerbygroupsdefaultincludethisusing) PythonLexer) CommentErrorKeywordNameNumberOperator PunctuationStringText Whitespace)AwkLexerSedLexerVimLexerc@seZdZdZdZgdZdgZdgZdefde j fge dd e j d fd ed fed gd ed fgdedfe ddedfdedfdefdedfdejdfdejfdejfdejfdejfdejfdejfde jfde j fgdZdS)rz5 For Awk scripts. .. versionadded:: 1.5 Awk)awkgawkmawknawkz*.awkzapplication/x-awk\s+#.*$commentsandwhitespacez(/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/\B#popz(?=/))rbadregexz\nz ^(?=\s|/)slashstartsregexz3\+\+|--|\|\||&&|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]?z0x[0-9a-fA-F]+[0-9]+z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*')rr!r rootN)__name__ __module__ __qualname____doc__namealiases filenames mimetypesrr SinglerrRegexrrrr DeclarationReservedr BuiltinOtherrFloatHexIntegerDoubletokensr7r7:/usr/lib/python3/dist-packages/pygments/lexers/textedit.pyrsV  rc@seZdZdZdZgdZddgZdgZej Z dZ dd e fd e jfd ejfd efd efdefdeeejfdeeejfdeeejfde deeejefde deedejefde de deeeejeejefde de deeeejeejeefg iZdS)rz% Lexer for Sed script files. Sed)sedgsedssedz*.sedz *.[gs]sedz text/x-sedz.((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)r#rrr"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+re MULTILINEflags_inside_delimsrr r,rr4rrr rrr5r-r6r7r7r7r8rLs@ rc@seZdZdZdZdgZgdZdgZej Z dZ dde d e e eeeeeee eefde d e e eeee efd efd efd ejfdejfdejfdefdefdejfdefdefdefdejfdejfdefgiZddZddZ ddZ!dS) rzA Lexer for VimL script files. .. versionadded:: 0.8 VimLvim) z*.vimz.vimrcz.exrcz.gvimrc_vimrc_exrc_gvimrcvimrcgvimrcz text/x-vimzpy(?: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.cKs<ddlm}m}m}||_||_||_tj|fi|dS)Nr)autocommandoption) pygments.lexers._vim_builtinsrIrJrK_cmd_opt_autr__init__)selfoptionsrIrJrKr7r7r8rPs zVimLexer.__init__cCst||f}|dkr2||dd|dt||ddkr2||dddt||kr2dS|t|krX||d|dt||dkoW||ddt||kSdS)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. rNTF)rlen)rQwmappingpr7r7r8is_ins ,  $zVimLexer.is_inccst||D];\}}}|tjur<|||jr|t|fVq|||js-|||jr5|tj |fVq|t |fVq|||fVqdS)N) rget_tokens_unprocessedr r1rXrMr rNrOr0r)rQtextindextokenvaluer7r7r8rYs   zVimLexer.get_tokens_unprocessedN)"r$r%r&r'r(r)r*r+r=r>r?_pythonrrrr rrr r rr-r5r,rr3rr r0r1r6rPrXrYr7r7r7r8rosL   r)r'r=rpygments.lexerrrrrrrpygments.lexers.pythonr pygments.tokenr r r r rrrrrr__all__rrrr7r7r7r8s   06#