Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
openscad.py97 linesDownload Raw Back to lexers
1"""2    pygments.lexers.openscad3    ~~~~~~~~~~~~~~~~~~~~~~~~4 5    Lexers for the OpenSCAD languages.6 7    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.8    :license: BSD, see LICENSE for details.9"""10 11from pygments.lexer import RegexLexer, bygroups, words, include12from pygments.token import Text, Comment, Punctuation, Operator, Keyword, Name, Number, Whitespace, Literal, String13 14__all__ = ['OpenScadLexer']15 16 17class OpenScadLexer(RegexLexer):18    """For openSCAD code.19    """20    name = "OpenSCAD"21    url = "https://openscad.org/"22    aliases = ["openscad"]23    filenames = ["*.scad"]24    mimetypes = ["application/x-openscad"]25    version_added = '2.16'26 27    tokens = {28        "root": [29            (r"[^\S\n]+", Whitespace),30            (r'//', Comment.Single, 'comment-single'),31            (r'/\*', Comment.Multiline, 'comment-multi'),32            (r"[{}\[\]\(\),;:]", Punctuation),33            (r"[*!#%\-+=?/]", Operator),34            (r"<=|<|==|!=|>=|>|&&|\|\|", Operator),35            (r"\$(f[asn]|t|vp[rtd]|children)", Operator),36            (r"(undef|PI)\b", Keyword.Constant),37            (38                r"(use|include)((?:\s|\\\\s)+)",39                bygroups(Keyword.Namespace, Text),40                "includes",41            ),42            (r"(module)(\s*)([^\s\(]+)",43             bygroups(Keyword.Namespace, Whitespace, Name.Namespace)),44            (r"(function)(\s*)([^\s\(]+)",45             bygroups(Keyword.Declaration, Whitespace, Name.Function)),46            (words(("true", "false"), prefix=r"\b", suffix=r"\b"), Literal),47            (words((48                "function", "module", "include", "use", "for",49                "intersection_for", "if", "else", "return"50                ), prefix=r"\b", suffix=r"\b"), Keyword51            ),52            (words((53                "circle", "square", "polygon", "text", "sphere", "cube",54                "cylinder", "polyhedron", "translate", "rotate", "scale",55                "resize", "mirror", "multmatrix", "color", "offset", "hull",56                "minkowski", "union", "difference", "intersection", "abs",57                "sign", "sin", "cos", "tan", "acos", "asin", "atan", "atan2",58                "floor", "round", "ceil", "ln", "log", "pow", "sqrt", "exp",59                "rands", "min", "max", "concat", "lookup", "str", "chr",60                "search", "version", "version_num", "norm", "cross",61                "parent_module", "echo", "import", "import_dxf",62                "dxf_linear_extrude", "linear_extrude", "rotate_extrude",63                "surface", "projection", "render", "dxf_cross",64                "dxf_dim", "let", "assign", "len"65                ), prefix=r"\b", suffix=r"\b"),66                Name.Builtin67            ),68            (r"\bchildren\b", Name.Builtin.Pseudo),69            (r'""".*?"""', String.Double),70            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),71            (r"-?\d+(\.\d+)?(e[+-]?\d+)?", Number),72            (r"\w+", Name),73        ],74        "includes": [75            (76                r"(<)([^>]*)(>)",77                bygroups(Punctuation, Comment.PreprocFile, Punctuation),78            ),79        ],80        'comment': [81            (r':param: [a-zA-Z_]\w*|:returns?:|(FIXME|MARK|TODO):',82             Comment.Special)83        ],84        'comment-single': [85            (r'\n', Text, '#pop'),86            include('comment'),87            (r'[^\n]+', Comment.Single)88        ],89        'comment-multi': [90            include('comment'),91            (r'[^*/]+', Comment.Multiline),92            (r'/\*', Comment.Multiline, '#push'),93            (r'\*/', Comment.Multiline, '#pop'),94            (r'[*/]', Comment.Multiline)95        ],96    }97 
codekingpro/portable-devtools · Team Ai