diff --git a/README.md b/README.md index ab7195b..f191356 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# fennek +# pinc ## Features -- Syntax Highlighting of the Fennek CMS Language +- Syntax Highlighting of the PiNC CMS Language diff --git a/package.json b/package.json index 5342c53..f494139 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "fennek", - "displayName": "fennek", - "description": "The official Plugin for the Fennek CMS Language", + "name": "pinc", + "displayName": "pinc", + "description": "The official Plugin for the PiNC CMS Language", "version": "0.0.1", "engines": { "vscode": "^1.63.0" @@ -12,22 +12,23 @@ "contributes": { "languages": [ { - "id": "fennek", + "id": "pinc", "aliases": [ - "Fennek", - "fennek" + "PINC", + "PiNC", + "pinc" ], "extensions": [ - ".fe" + ".pi" ], "configuration": "./language-configuration.json" } ], "grammars": [ { - "language": "fennek", - "scopeName": "source.fe", - "path": "./syntaxes/fennek.tmLanguage.json" + "language": "pinc", + "scopeName": "source.pi", + "path": "./syntaxes/pinc.tmLanguage.json" } ] } diff --git a/syntaxes/fennek.tmLanguage.json b/syntaxes/fennek.tmLanguage.json deleted file mode 100644 index 3d45b81..0000000 --- a/syntaxes/fennek.tmLanguage.json +++ /dev/null @@ -1,300 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", - "name": "Fennek", - "scopeName": "source.fe", - "patterns": [ - { - "include": "#double_comment" - }, - { - "include": "#global_symbol" - }, - { - "include": "#block_definition" - } - ], - "repository": { - "block_definition": { - "begin": "^\\s*(component|page|store|site)\\s+([A-Za-z][\\w]*)\\s*({)", - "name": "source.fennek.embedded.source", - "beginCaptures": { - "1": { - "name": "storage.type.model.fennek" - }, - "2": { - "name": "entity.name.type.model.fennek" - }, - "3": { - "name": "punctuation.definition.tag.fennek" - } - }, - "patterns": [ - { - "include": "#double_comment" - }, - { - "include": "#assignment" - } - ], - "end": "\\s*\\}", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.fennek" - } - } - }, - "assignment": { - "patterns": [ - { - "begin": "^\\s*(\\w+?)(\\??)\\s*(=)\\s*", - "beginCaptures": { - "1": { - "name": "variable.other.assignment.fennek" - }, - "2": { - "name": "keyword.operator.optional_type.fennek" - }, - "3": { - "name": "keyword.operator.terraform" - } - }, - "patterns": [ - { - "include": "#symbol" - }, - { - "include": "#double_comment_inline" - } - ], - "end": ";" - } - ] - }, - "global_symbol": { - "name": "source.fennek.attribute.with_arguments", - "begin": "(@@[\\w]+)(\\()", - "beginCaptures": { - "1": { - "name": "entity.name.function.attribute.fennek" - }, - "2": { - "name": "punctuation.definition.tag.fennek" - } - }, - "patterns": [ - { - "include": "#named_argument" - } - ], - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.fennek" - } - } - }, - "symbol": { - "name": "source.fennek.attribute.with_arguments", - "begin": "(@[\\w]+)(\\()", - "beginCaptures": { - "1": { - "name": "entity.name.function.attribute.fennek" - }, - "2": { - "name": "punctuation.definition.tag.fennek" - } - }, - "patterns": [ - { - "include": "#named_argument" - } - ], - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.fennek" - } - } - }, - "attribute_with_arguments": { - "name": "source.fennek.attribute.with_arguments", - "begin": "(@@?[\\w]+)(\\()", - "beginCaptures": { - "1": { - "name": "entity.name.function.attribute.fennek" - }, - "2": { - "name": "punctuation.definition.tag.fennek" - } - }, - "patterns": [ - { - "include": "#named_argument" - } - ], - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.fennek" - } - } - }, - "array": { - "name": "source.fennek.array", - "begin": "\\[", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.fennek" - } - }, - "patterns": [ - { - "include": "#value" - }, - { - "include": "#symbol" - }, - { - "include": "#double_comment_inline" - } - ], - "end": "\\]", - "endCaptures": { - "1": { - "name": "punctuation.definition.tag.fennek" - } - } - }, - "value": { - "name": "source.fennek.value", - "patterns": [ - { - "include": "#array" - }, - { - "include": "#functional" - }, - { - "include": "#literal" - } - ] - }, - "literal": { - "name": "source.fennek.literal", - "patterns": [ - { - "include": "#boolean" - }, - { - "include": "#number" - }, - { - "include": "#double_quoted_string" - }, - { - "include": "#identifier" - } - ] - }, - "identifier": { - "patterns": [ - { - "match": "\\b(\\w)+\\b", - "name": "support.constant.constant.fennek" - } - ] - }, - "map_key": { - "name": "source.fennek.key", - "patterns": [ - { - "match": "(\\w+)\\s*(:)\\s*", - "captures": { - "1": { - "name": "variable.parameter.key.fennek" - }, - "2": { - "name": "punctuation.definition.separator.key-value.fennek" - } - } - } - ] - }, - "named_argument": { - "name": "source.fennek.named_argument", - "patterns": [ - { - "include": "#map_key" - }, - { - "include": "#value" - } - ] - }, - "double_comment": { - "begin": "//", - "end": "$\\n?", - "name": "comment.fennek" - }, - "double_comment_inline": { - "match": "//[^\\n]*", - "name": "comment.fennek" - }, - "boolean": { - "match": "\\b(true|false)\\b", - "name": "constant.language.boolean.fennek" - }, - "number": { - "match": "((0(x|X)[0-9a-fA-F]*)|(\\+|-)?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\b", - "name": "constant.numeric.fennek" - }, - "double_quoted_string": { - "begin": "\"", - "beginCaptures": { - "0": { - "name": "string.quoted.double.start.fennek" - } - }, - "end": "\"", - "endCaptures": { - "0": { - "name": "string.quoted.double.end.fennek" - } - }, - "patterns": [ - { - "include": "#string_interpolation" - }, - { - "match": "([\\w\\-\\/\\._\\\\%@:\\?=]+)", - "name": "string.quoted.double.fennek" - } - ], - "name": "unnamed" - }, - "string_interpolation": { - "patterns": [ - { - "begin": "\\$\\{", - "beginCaptures": { - "0": { - "name": "keyword.control.interpolation.start.fennek" - } - }, - "end": "\\s*\\}", - "endCaptures": { - "0": { - "name": "keyword.control.interpolation.end.fennek" - } - }, - "name": "source.tag.embedded.source.fennek", - "patterns": [ - { - "include": "#value" - } - ] - } - ] - } - } -} diff --git a/syntaxes/pinc.tmLanguage.json b/syntaxes/pinc.tmLanguage.json new file mode 100644 index 0000000..fc8327c --- /dev/null +++ b/syntaxes/pinc.tmLanguage.json @@ -0,0 +1,233 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "name": "PiNC", + "scopeName": "source.pi", + "patterns": [ + { + "include": "#double_comment" + }, + { + "include": "#operator" + }, + { + "include": "#punctuations" + }, + { + "include": "#tag" + }, + { + "include": "#jsx" + }, + { + "include": "#string" + }, + { + "include": "#array" + }, + { + "include": "#keyword" + }, + { + "include": "#number" + }, + { + "include": "#assignment" + } + ], + "repository": { + "keyword": { + "patterns": [ + { + "name": "storage.type", + "match": "\\b(component|page|store|site)\\b" + }, + { + "name": "keyword.control", + "match": "\\b(else|for|reverse|break|continue|if|in|let)\\b" + }, + { + "name": "constant.language", + "match": "\\b(false|true)\\b" + } + ] + }, + "number": { + "patterns": [ + { + "match": "\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]+)?([eE][-+]?[0-9_]+)?)?)\\b", + "name": "constant.numeric" + } + ] + }, + "operator": { + "patterns": [ + { + "match": "(->)|(\\|\\|)|(&&)|(\\+\\+)|(\\*\\*)|(\\+)|(-)|(\\*)|(/)|(\\.\\.\\.)|(\\.\\.)|(===)|(==)|(!)|(<=)|((\\s+)>(\\s+))|((\\s+)<(\\s+))|(>=)|(::)", + "name": "keyword.operator keyword" + } + ] + }, + "assignment": { + "patterns": [ + { + "match": "=", + "name": "keyword.operator.assignment" + } + ] + }, + "punctuations": { + "patterns": [ + { + "match": ";", + "name": "punctuation.terminator" + }, + { + "match": "\\.", + "name": "punctuation.accessor" + }, + { + "match": "\\,", + "name": "punctuation.separator" + }, + { + "match": "\\?|:", + "name": "punctuation.separator" + }, + { + "match": "\\{", + "name": "punctuation.section.braces.begin" + }, + { + "match": "\\}", + "name": "punctuation.section.braces.end" + }, + { + "match": "\\(", + "name": "punctuation.section.parens.begin" + }, + { + "match": "\\)", + "name": "punctuation.section.parens.end" + } + ] + }, + "string": { + "patterns": [ + { + "name": "string.quoted.double", + "begin": "\"", + "end": "\"", + "beginCaptures": { + "1": { + "name": "punctuation.definition.string.begin" + } + }, + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end" + } + }, + "patterns": [ + { + "name": "constant.character.escape", + "match": "\\\\." + }, + { + "name": "meta.template.expression", + "begin": "\\$\\{", + "beginCaptures": { + "0": { + "name": "punctuation.section.interpolation.begin" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "punctuation.section.interpolation.end" + } + }, + "patterns": [ + { + "match": "[a-z_][0-9a-zA-Z_]*" + }, + { + "include": "#operator" + }, + { + "include": "#punctuations" + }, + { + "include": "#string" + } + ] + } + ] + } + ] + }, + "array": { + "patterns": [ + { + "match": "\\[", + "name": "punctuation.section.brackets.begin" + }, + { + "match": "\\]", + "name": "punctuation.section.brackets.end" + } + ] + }, + "jsx": { + "patterns": [ + { + "match": "/>" + }, + { + "match": "|\\s+)", + "captures": { + "1": { + "name": "entity.name.tag" + } + } + }, + { + "match": "", + "captures": { + "1": { + "name": "entity.name.tag" + } + } + } + ] + }, + "tag": { + "patterns": [ + { + "match": "(#(String|Int|Float|Boolean|Array|Record|Template))", + "name": "support.function" + } + ] + }, + "double_comment": { + "begin": "//", + "end": "$\\n?", + "name": "comment.pinc" + } + } +}