summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/pygments/lexers/openscad.py
diff options
context:
space:
mode:
authorcyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
committercyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
commit6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch)
treeb1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/pygments/lexers/openscad.py
parent4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff)
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/openscad.py')
-rw-r--r--venv/lib/python3.11/site-packages/pygments/lexers/openscad.py97
1 files changed, 97 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/openscad.py b/venv/lib/python3.11/site-packages/pygments/lexers/openscad.py
new file mode 100644
index 0000000..de8fdaf
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/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)
+ ],
+ }