943acbc573
Durcit la convention de nommage des projets (dérive constatée : 'Sliding Automation', 'code_versioning'... au lieu des formes canoniques). - trilium_api.py : projets_canoniques() lit le référentiel = valeurs du label projet sur les notes de type=projet (source unique, pas de constante en dur). Note-projet CodeVersioning créée (manquait). - mcp_server.py : _valider_projet() branché dans les 6 tools de création (add_decision/history/backlog, new_conversation, create_entite, add_skill). Refuse un projet non canonique (suggestion si faute) ou inconnu (renvoi au processus de création de projet). Ne verrouille pas si référentiel illisible. - lint_audit.py : VAL-nommage aligné sur le référentiel (attrape casse, espace ET snake_case ; l'ancien 'contient un espace' ratait code_versioning). - Données : 79 notes ré-étiquetées vers les 3 formes canoniques. Quality by design : l'erreur de nommage devient impossible à l'écriture, le Lint n'est plus que le filet de sécurité.
97 lines
3.6 KiB
Python
97 lines
3.6 KiB
Python
"""
|
|
pygments.lexers.openscad
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Lexers for the OpenSCAD languages.
|
|
|
|
:copyright: Copyright 2006-present 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)
|
|
],
|
|
}
|