Changed code to support older Python versions

This commit is contained in:
Malasaur 2025-12-01 23:27:09 +01:00
parent eb92d2d36f
commit 582458cdd0
5027 changed files with 794942 additions and 4 deletions

View file

@ -0,0 +1,96 @@
"""
pygments.lexers.openscad
~~~~~~~~~~~~~~~~~~~~~~~~
Lexers for the OpenSCAD languages.
:copyright: Copyright 2006-2025 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.
"""
name = "OpenSCAD"
url = "https://openscad.org/"
aliases = ["openscad"]
filenames = ["*.scad"]
mimetypes = ["application/x-openscad"]
version_added = '2.16'
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)
],
}