diff options
author | nkozlovskiy <nmk@ydb.tech> | 2023-09-29 12:24:06 +0300 |
---|---|---|
committer | nkozlovskiy <nmk@ydb.tech> | 2023-09-29 12:41:34 +0300 |
commit | e0e3e1717e3d33762ce61950504f9637a6e669ed (patch) | |
tree | bca3ff6939b10ed60c3d5c12439963a1146b9711 /contrib/python/Pygments/py3/pygments/lexers/openscad.py | |
parent | 38f2c5852db84c7b4d83adfcb009eb61541d1ccd (diff) | |
download | ydb-e0e3e1717e3d33762ce61950504f9637a6e669ed.tar.gz |
add ydb deps
Diffstat (limited to 'contrib/python/Pygments/py3/pygments/lexers/openscad.py')
-rw-r--r-- | contrib/python/Pygments/py3/pygments/lexers/openscad.py | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/contrib/python/Pygments/py3/pygments/lexers/openscad.py b/contrib/python/Pygments/py3/pygments/lexers/openscad.py new file mode 100644 index 0000000000..de8fdaf61b --- /dev/null +++ b/contrib/python/Pygments/py3/pygments/lexers/openscad.py @@ -0,0 +1,97 @@ +""" + pygments.lexers.openscad + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Lexers for the OpenSCAD languages. + + :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from pygments.lexer import RegexLexer, bygroups, words, include +from pygments.token import Text, Comment, Punctuation, Operator, Keyword, Name, Number, Whitespace, Literal, String + +__all__ = ['OpenScadLexer'] + + +class OpenScadLexer(RegexLexer): + """For openSCAD code. + + .. versionadded:: 2.16 + """ + name = "OpenSCAD" + url = "https://openscad.org/" + aliases = ["openscad"] + filenames = ["*.scad"] + mimetypes = ["application/x-openscad"] + + tokens = { + "root": [ + (r"[^\S\n]+", Whitespace), + (r'//', Comment.Single, 'comment-single'), + (r'/\*', Comment.Multiline, 'comment-multi'), + (r"[{}\[\]\(\),;:]", Punctuation), + (r"[*!#%\-+=?/]", Operator), + (r"<=|<|==|!=|>=|>|&&|\|\|", Operator), + (r"\$(f[asn]|t|vp[rtd]|children)", Operator), + (r"(undef|PI)\b", Keyword.Constant), + ( + r"(use|include)((?:\s|\\\\s)+)", + bygroups(Keyword.Namespace, Text), + "includes", + ), + (r"(module)(\s*)([^\s\(]+)", + bygroups(Keyword.Namespace, Whitespace, Name.Namespace)), + (r"(function)(\s*)([^\s\(]+)", + bygroups(Keyword.Declaration, Whitespace, Name.Function)), + (words(("true", "false"), prefix=r"\b", suffix=r"\b"), Literal), + (words(( + "function", "module", "include", "use", "for", + "intersection_for", "if", "else", "return" + ), prefix=r"\b", suffix=r"\b"), Keyword + ), + (words(( + "circle", "square", "polygon", "text", "sphere", "cube", + "cylinder", "polyhedron", "translate", "rotate", "scale", + "resize", "mirror", "multmatrix", "color", "offset", "hull", + "minkowski", "union", "difference", "intersection", "abs", + "sign", "sin", "cos", "tan", "acos", "asin", "atan", "atan2", + "floor", "round", "ceil", "ln", "log", "pow", "sqrt", "exp", + "rands", "min", "max", "concat", "lookup", "str", "chr", + "search", "version", "version_num", "norm", "cross", + "parent_module", "echo", "import", "import_dxf", + "dxf_linear_extrude", "linear_extrude", "rotate_extrude", + "surface", "projection", "render", "dxf_cross", + "dxf_dim", "let", "assign", "len" + ), prefix=r"\b", suffix=r"\b"), + Name.Builtin + ), + (r"\bchildren\b", Name.Builtin.Pseudo), + (r'""".*?"""', String.Double), + (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double), + (r"-?\d+(\.\d+)?(e[+-]?\d+)?", Number), + (r"\w+", Name), + ], + "includes": [ + ( + r"(<)([^>]*)(>)", + bygroups(Punctuation, Comment.PreprocFile, Punctuation), + ), + ], + 'comment': [ + (r':param: [a-zA-Z_]\w*|:returns?:|(FIXME|MARK|TODO):', + Comment.Special) + ], + 'comment-single': [ + (r'\n', Text, '#pop'), + include('comment'), + (r'[^\n]+', Comment.Single) + ], + 'comment-multi': [ + include('comment'), + (r'[^*/]+', Comment.Multiline), + (r'/\*', Comment.Multiline, '#push'), + (r'\*/', Comment.Multiline, '#pop'), + (r'[*/]', Comment.Multiline) + ], + } |