diff options
-rw-r--r-- | manifest.json | 11 | ||||
-rw-r--r-- | plugins/language_graphql.lua | 42 |
2 files changed, 52 insertions, 1 deletions
diff --git a/manifest.json b/manifest.json index f4d5c32..ddc925d 100644 --- a/manifest.json +++ b/manifest.json @@ -61,7 +61,7 @@ { "id": "meta_languages", "type": "meta", - "version": "0.1.4", + "version": "0.1.5", "mod_version": "3", "description": "A metapackage containing all publically accessible language syntaxes.", "dependencies": { @@ -96,6 +96,7 @@ "language_glsl": {}, "language_gmi": {}, "language_go": {}, + "language_graphql": {}, "language_gravity": {}, "language_hare": {}, "language_haxe": {}, @@ -793,6 +794,14 @@ "tags": ["language"] }, { + "description": "Syntax for the [GraphQL](https://graphql.org/) query language, and server-side runtime for executing queries using a type system.", + "version": "0.1", + "path": "plugins/language_graphql.lua", + "id": "language_graphql", + "mod_version": "3", + "tags": ["language"] + }, + { "description": "Syntax for the [Gravity](https://marcobambini.github.io/gravity/) programming language.", "version": "0.1", "path": "plugins/language_gravity.lua", diff --git a/plugins/language_graphql.lua b/plugins/language_graphql.lua new file mode 100644 index 0000000..6e38d28 --- /dev/null +++ b/plugins/language_graphql.lua @@ -0,0 +1,42 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "GraphQL", + files = { "%.graphql$", "%.gql$" }, + comment = "#", + block_comment = { '"""', '"""' }, + patterns = { + { pattern = { '"', '"', "\\" }, type = "string" }, + { pattern = { '"""', '"""' }, type = "comment" }, + { pattern = "#.*", type = "comment" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "%s*[@]%s*[%a_][%w_]*", type = "function" }, + { pattern = "!", type = "operator" }, + { pattern = "%s*=%s*", type = "operator" }, + { pattern = "%s*%$[%a_][%w_]*:*", type = "literal" }, + { pattern = "query%s*()[%a_][%w_]*[(]", type = { "keyword", "function" } }, + { pattern = "mutation%s*()[%a_][%w_]*[(]", type = { "keyword", "function" } }, + { pattern = ":%s*%[*()[%a_,%s][%w_,%s]*()%]*()[!]*", type = { "symbol", "literal", "symbol", "operator" } }, + }, + symbols = { + ["query"] = "keyword", + ["mutation"] = "keyword", + ["type"] = "keyword", + ["interface"] = "keyword", + ["input"] = "keyword", + ["fragment"] = "keyword", + ["directive"] = "keyword", + ["extends"] = "keyword", + ["implements"] = "keyword", + ["on"] = "keyword", + ["enum"] = "keyword", + ["scalar"] = "keyword", + ["union"] = "keyword", + ["schema"] = "keyword", + ["extend"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + }, +} + |