From 6d7ba58f880be618ade07f8ea080fe8c4bf8a896 Mon Sep 17 00:00:00 2001 From: cyfraeviolae Date: Wed, 3 Apr 2024 03:10:44 -0400 Subject: venv --- .../site-packages/pygments/lexers/teraterm.py | 326 +++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py') diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py b/venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py new file mode 100644 index 0000000..2c0d3b2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py @@ -0,0 +1,326 @@ +""" + pygments.lexers.teraterm + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Lexer for Tera Term macro files. + + :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re + +from pygments.lexer import RegexLexer, include, bygroups +from pygments.token import Text, Comment, Operator, Name, String, \ + Number, Keyword, Error + +__all__ = ['TeraTermLexer'] + + +class TeraTermLexer(RegexLexer): + """ + For Tera Term macro source code. + + .. versionadded:: 2.4 + """ + name = 'Tera Term macro' + url = 'https://ttssh2.osdn.jp/' + aliases = ['teratermmacro', 'teraterm', 'ttl'] + filenames = ['*.ttl'] + mimetypes = ['text/x-teratermmacro'] + + tokens = { + 'root': [ + include('comments'), + include('labels'), + include('commands'), + include('builtin-variables'), + include('user-variables'), + include('operators'), + include('numeric-literals'), + include('string-literals'), + include('all-whitespace'), + (r'\S', Text), + ], + 'comments': [ + (r';[^\r\n]*', Comment.Single), + (r'/\*', Comment.Multiline, 'in-comment'), + ], + 'in-comment': [ + (r'\*/', Comment.Multiline, '#pop'), + (r'[^*/]+', Comment.Multiline), + (r'[*/]', Comment.Multiline) + ], + 'labels': [ + (r'(?i)^(\s*)(:[a-z0-9_]+)', bygroups(Text.Whitespace, Name.Label)), + ], + 'commands': [ + ( + r'(?i)\b(' + r'basename|' + r'beep|' + r'bplusrecv|' + r'bplussend|' + r'break|' + r'bringupbox|' + # 'call' is handled separately. + r'callmenu|' + r'changedir|' + r'checksum16|' + r'checksum16file|' + r'checksum32|' + r'checksum32file|' + r'checksum8|' + r'checksum8file|' + r'clearscreen|' + r'clipb2var|' + r'closesbox|' + r'closett|' + r'code2str|' + r'connect|' + r'continue|' + r'crc16|' + r'crc16file|' + r'crc32|' + r'crc32file|' + r'cygconnect|' + r'delpassword|' + r'dirname|' + r'dirnamebox|' + r'disconnect|' + r'dispstr|' + r'do|' + r'else|' + r'elseif|' + r'enablekeyb|' + r'end|' + r'endif|' + r'enduntil|' + r'endwhile|' + r'exec|' + r'execcmnd|' + r'exit|' + r'expandenv|' + r'fileclose|' + r'fileconcat|' + r'filecopy|' + r'filecreate|' + r'filedelete|' + r'filelock|' + r'filemarkptr|' + r'filenamebox|' + r'fileopen|' + r'fileread|' + r'filereadln|' + r'filerename|' + r'filesearch|' + r'fileseek|' + r'fileseekback|' + r'filestat|' + r'filestrseek|' + r'filestrseek2|' + r'filetruncate|' + r'fileunlock|' + r'filewrite|' + r'filewriteln|' + r'findclose|' + r'findfirst|' + r'findnext|' + r'flushrecv|' + r'foldercreate|' + r'folderdelete|' + r'foldersearch|' + r'for|' + r'getdate|' + r'getdir|' + r'getenv|' + r'getfileattr|' + r'gethostname|' + r'getipv4addr|' + r'getipv6addr|' + r'getmodemstatus|' + r'getpassword|' + r'getspecialfolder|' + r'gettime|' + r'gettitle|' + r'getttdir|' + r'getver|' + # 'goto' is handled separately. + r'if|' + r'ifdefined|' + r'include|' + r'inputbox|' + r'int2str|' + r'intdim|' + r'ispassword|' + r'kmtfinish|' + r'kmtget|' + r'kmtrecv|' + r'kmtsend|' + r'listbox|' + r'loadkeymap|' + r'logautoclosemode|' + r'logclose|' + r'loginfo|' + r'logopen|' + r'logpause|' + r'logrotate|' + r'logstart|' + r'logwrite|' + r'loop|' + r'makepath|' + r'messagebox|' + r'mpause|' + r'next|' + r'passwordbox|' + r'pause|' + r'quickvanrecv|' + r'quickvansend|' + r'random|' + r'recvln|' + r'regexoption|' + r'restoresetup|' + r'return|' + r'rotateleft|' + r'rotateright|' + r'scprecv|' + r'scpsend|' + r'send|' + r'sendbreak|' + r'sendbroadcast|' + r'sendfile|' + r'sendkcode|' + r'sendln|' + r'sendlnbroadcast|' + r'sendlnmulticast|' + r'sendmulticast|' + r'setbaud|' + r'setdate|' + r'setdebug|' + r'setdir|' + r'setdlgpos|' + r'setdtr|' + r'setecho|' + r'setenv|' + r'setexitcode|' + r'setfileattr|' + r'setflowctrl|' + r'setmulticastname|' + r'setpassword|' + r'setrts|' + r'setspeed|' + r'setsync|' + r'settime|' + r'settitle|' + r'show|' + r'showtt|' + r'sprintf|' + r'sprintf2|' + r'statusbox|' + r'str2code|' + r'str2int|' + r'strcompare|' + r'strconcat|' + r'strcopy|' + r'strdim|' + r'strinsert|' + r'strjoin|' + r'strlen|' + r'strmatch|' + r'strremove|' + r'strreplace|' + r'strscan|' + r'strspecial|' + r'strsplit|' + r'strtrim|' + r'testlink|' + r'then|' + r'tolower|' + r'toupper|' + r'unlink|' + r'until|' + r'uptime|' + r'var2clipb|' + r'wait|' + r'wait4all|' + r'waitevent|' + r'waitln|' + r'waitn|' + r'waitrecv|' + r'waitregex|' + r'while|' + r'xmodemrecv|' + r'xmodemsend|' + r'yesnobox|' + r'ymodemrecv|' + r'ymodemsend|' + r'zmodemrecv|' + r'zmodemsend' + r')\b', + Keyword, + ), + (r'(?i)(call|goto)([ \t]+)([a-z0-9_]+)', + bygroups(Keyword, Text.Whitespace, Name.Label)), + ], + 'builtin-variables': [ + ( + r'(?i)(' + r'groupmatchstr1|' + r'groupmatchstr2|' + r'groupmatchstr3|' + r'groupmatchstr4|' + r'groupmatchstr5|' + r'groupmatchstr6|' + r'groupmatchstr7|' + r'groupmatchstr8|' + r'groupmatchstr9|' + r'inputstr|' + r'matchstr|' + r'mtimeout|' + r'param1|' + r'param2|' + r'param3|' + r'param4|' + r'param5|' + r'param6|' + r'param7|' + r'param8|' + r'param9|' + r'paramcnt|' + r'params|' + r'result|' + r'timeout' + r')\b', + Name.Builtin + ), + ], + 'user-variables': [ + (r'(?i)[a-z_][a-z0-9_]*', Name.Variable), + ], + 'numeric-literals': [ + (r'(-?)([0-9]+)', bygroups(Operator, Number.Integer)), + (r'(?i)\$[0-9a-f]+', Number.Hex), + ], + 'string-literals': [ + (r'(?i)#(?:[0-9]+|\$[0-9a-f]+)', String.Char), + (r"'[^'\n]*'", String.Single), + (r'"[^"\n]*"', String.Double), + # Opening quotes without a closing quote on the same line are errors. + (r"('[^']*)(\n)", bygroups(Error, Text.Whitespace)), + (r'("[^"]*)(\n)', bygroups(Error, Text.Whitespace)), + ], + 'operators': [ + (r'and|not|or|xor', Operator.Word), + (r'[!%&*+<=>^~\|\/-]+', Operator), + (r'[()]', String.Symbol), + ], + 'all-whitespace': [ + (r'\s+', Text.Whitespace), + ], + } + + # Turtle and Tera Term macro files share the same file extension + # but each has a recognizable and distinct syntax. + def analyse_text(text): + if re.search(TeraTermLexer.tokens['commands'][0][0], text): + return 0.01 -- cgit v1.2.3