tm-grammars
Version:
Collecton of TextMate grammars in JSON
790 lines (789 loc) • 18.7 kB
JSON
{
"displayName": "Nextflow Groovy",
"foldingStartMarker": "(\\{\\s*$|^\\s*// \\{\\{\\{)",
"foldingStopMarker": "^\\s*(}|// }}}$)",
"name": "nextflow-groovy",
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.groovy"
}
},
"match": "^(#!).+$\\n",
"name": "comment.line.hashbang.groovy"
},
{
"include": "#groovy"
}
],
"repository": {
"braces": {
"begin": "\\{",
"end": "}",
"patterns": [
{
"include": "#groovy-code"
}
]
},
"closures": {
"begin": "\\{(?=.*?->)",
"end": "}",
"patterns": [
{
"begin": "(?<=\\{)(?=[^}]*?->)",
"end": "->",
"endCaptures": {
"0": {
"name": "keyword.operator.groovy"
}
},
"patterns": [
{
"begin": "(?!->)",
"end": "(?=->)",
"name": "meta.closure.parameters.groovy",
"patterns": [
{
"begin": "(?!,|->)",
"end": "(?=,|->)",
"name": "meta.closure.parameter.groovy",
"patterns": [
{
"begin": "=",
"beginCaptures": {
"0": {
"name": "keyword.operator.assignment.groovy"
}
},
"end": "(?=,|->)",
"name": "meta.parameter.default.groovy",
"patterns": [
{
"include": "#groovy-code"
}
]
},
{
"include": "#parameters"
}
]
}
]
}
]
},
{
"begin": "(?=[^}])",
"end": "(?=})",
"patterns": [
{
"include": "#groovy-code"
}
]
}
]
},
"comments": {
"patterns": [
{
"captures": {
"0": {
"name": "punctuation.definition.comment.groovy"
}
},
"match": "/\\*\\*/",
"name": "comment.block.empty.groovy"
},
{
"include": "text.html.javadoc"
},
{
"begin": "/\\*",
"captures": {
"0": {
"name": "punctuation.definition.comment.groovy"
}
},
"end": "\\*/",
"name": "comment.block.groovy"
},
{
"captures": {
"1": {
"name": "punctuation.definition.comment.groovy"
}
},
"match": "(//).*$\\n?",
"name": "comment.line.double-slash.groovy"
}
]
},
"constants": {
"patterns": [
{
"match": "\\b([A-Z][0-9A-Z_]+)\\b",
"name": "constant.other.groovy"
},
{
"match": "\\b(true|false|null)\\b",
"name": "constant.language.groovy"
}
]
},
"constructor-call": {
"begin": "\\bnew\\b",
"beginCaptures": {
"0": {
"name": "keyword.control.new.groovy"
}
},
"end": "(?<=\\))|$",
"patterns": [
{
"begin": "(?=\\w.*\\(?)",
"end": "(?<=\\))|$",
"patterns": [
{
"include": "#object-types"
},
{
"begin": "\\(",
"beginCaptures": {
"1": {
"name": "storage.type.groovy"
}
},
"end": "\\)",
"patterns": [
{
"include": "#groovy"
}
]
}
]
}
]
},
"groovy": {
"patterns": [
{
"include": "#comments"
},
{
"include": "#variables"
},
{
"include": "#groovy-code"
}
]
},
"groovy-code": {
"patterns": [
{
"include": "#groovy-code-minus-map-keys"
},
{
"include": "#map-keys"
}
]
},
"groovy-code-minus-map-keys": {
"patterns": [
{
"include": "#comments"
},
{
"include": "#keyword-language"
},
{
"include": "#values"
},
{
"include": "#keyword-operator"
},
{
"include": "#types"
},
{
"include": "#parens"
},
{
"include": "#closures"
},
{
"include": "#braces"
}
]
},
"keyword": {
"patterns": [
{
"include": "#keyword-operator"
},
{
"include": "#keyword-language"
}
]
},
"keyword-language": {
"patterns": [
{
"match": "\\b(try|catch|throw)\\b",
"name": "keyword.control.exception.groovy"
},
{
"match": "\\b((?<!\\.)(?:return|if|else))\\b",
"name": "keyword.control.groovy"
},
{
"begin": "\\b(assert)\\s",
"beginCaptures": {
"1": {
"name": "keyword.control.assert.groovy"
}
},
"end": "$|[;}]",
"name": "meta.declaration.assertion.groovy",
"patterns": [
{
"match": ":",
"name": "keyword.operator.assert.expression-seperator.groovy"
},
{
"include": "#groovy-code-minus-map-keys"
}
]
}
]
},
"keyword-operator": {
"patterns": [
{
"match": "\\b(as)\\b",
"name": "keyword.operator.as.groovy"
},
{
"match": "\\b(in)\\b",
"name": "keyword.operator.in.groovy"
},
{
"match": "\\?:",
"name": "keyword.operator.elvis.groovy"
},
{
"match": "\\.\\.",
"name": "keyword.operator.range.groovy"
},
{
"match": "->",
"name": "keyword.operator.arrow.groovy"
},
{
"match": "<<",
"name": "keyword.operator.leftshift.groovy"
},
{
"match": "(?<=\\S)\\.(?=\\S)",
"name": "keyword.operator.navigation.groovy"
},
{
"match": "(?<=\\S)\\?\\.(?=\\S)",
"name": "keyword.operator.safe-navigation.groovy"
},
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.groovy"
}
},
"end": "(?=$|[])}])",
"name": "meta.evaluation.ternary.groovy",
"patterns": [
{
"match": ":",
"name": "keyword.operator.ternary.expression-seperator.groovy"
},
{
"include": "#groovy-code-minus-map-keys"
}
]
},
{
"match": "==~",
"name": "keyword.operator.match.groovy"
},
{
"match": "=~",
"name": "keyword.operator.find.groovy"
},
{
"match": "\\b(instanceof)\\b",
"name": "keyword.operator.instanceof.groovy"
},
{
"match": "(==|!=|<=|>=|<=>|<>|[<>]|<<)",
"name": "keyword.operator.comparison.groovy"
},
{
"match": "=",
"name": "keyword.operator.assignment.groovy"
},
{
"match": "(--|\\+\\+)",
"name": "keyword.operator.increment-decrement.groovy"
},
{
"match": "([-%*+/])",
"name": "keyword.operator.arithmetic.groovy"
},
{
"match": "(!|&&|\\|\\|)",
"name": "keyword.operator.logical.groovy"
}
]
},
"map-keys": {
"patterns": [
{
"captures": {
"1": {
"name": "constant.other.key.groovy"
},
"2": {
"name": "punctuation.definition.seperator.key-value.groovy"
}
},
"match": "(\\w+)\\s*(:)"
}
]
},
"method-call": {
"begin": "([$\\w]+)(\\()",
"beginCaptures": {
"1": {
"name": "meta.method.groovy"
},
"2": {
"name": "punctuation.definition.method-parameters.begin.groovy"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.method-parameters.end.groovy"
}
},
"name": "meta.method-call.groovy",
"patterns": [
{
"match": ",",
"name": "punctuation.definition.seperator.parameter.groovy"
},
{
"include": "#groovy-code"
}
]
},
"nest-curly": {
"begin": "\\{",
"captures": {
"0": {
"name": "punctuation.section.scope.groovy"
}
},
"end": "}",
"patterns": [
{
"include": "#nest-curly"
}
]
},
"numbers": {
"patterns": [
{
"match": "((0([Xx])\\h*)|([-+])?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))(([Ee])([-+])?[0-9]+)?)([DFLUdfglu]|UL|ul)?\\b",
"name": "constant.numeric.groovy"
}
]
},
"object-types": {
"patterns": [
{
"begin": "\\b((?:[a-z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[IL]))<",
"end": "[>[^],<?\\[\\w\\s]]",
"name": "storage.type.generic.groovy",
"patterns": [
{
"include": "#object-types"
},
{
"begin": "<",
"end": "[>[^],<\\[\\w\\s]]",
"name": "storage.type.generic.groovy"
}
]
},
{
"match": "\\b(?:[A-Za-z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[IL])\\b",
"name": "storage.type.groovy"
}
]
},
"parameters": {
"patterns": [
{
"include": "#types"
},
{
"match": "\\w+",
"name": "variable.parameter.method.groovy"
}
]
},
"parens": {
"begin": "\\(",
"end": "\\)",
"patterns": [
{
"include": "#groovy-code"
}
]
},
"primitive-types": {
"patterns": [
{
"match": "\\b(?:boolean|byte|char|short|int|float|long|double)\\b",
"name": "storage.type.primitive.groovy"
}
]
},
"string-quoted-double": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.groovy"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.groovy"
}
},
"name": "string.quoted.double.groovy",
"patterns": [
{
"include": "#string-quoted-double-contents"
}
]
},
"string-quoted-double-contents": {
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.groovy"
},
{
"applyEndPatternLast": 1,
"begin": "\\$\\w",
"end": "(?=\\W)",
"name": "variable.other.interpolated.groovy",
"patterns": [
{
"match": "\\w",
"name": "variable.other.interpolated.groovy"
},
{
"match": "\\.",
"name": "keyword.other.dereference.groovy"
}
]
},
{
"begin": "\\$\\{",
"captures": {
"0": {
"name": "punctuation.section.embedded.groovy"
}
},
"end": "}",
"name": "source.groovy.embedded.source",
"patterns": [
{
"include": "#nest-curly"
}
]
}
]
},
"string-quoted-double-multiline": {
"begin": "\"\"\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.groovy"
}
},
"end": "\"\"\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.groovy"
}
},
"name": "string.quoted.double.multiline.groovy",
"patterns": [
{
"include": "#string-quoted-double-contents"
}
]
},
"string-quoted-single": {
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.groovy"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.groovy"
}
},
"name": "string.quoted.single.groovy",
"patterns": [
{
"include": "#string-quoted-single-contents"
}
]
},
"string-quoted-single-contents": {
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.groovy"
}
]
},
"string-quoted-single-multiline": {
"begin": "'''",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.groovy"
}
},
"end": "'''",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.groovy"
}
},
"name": "string.quoted.single.multiline.groovy",
"patterns": [
{
"include": "#string-quoted-single-contents"
}
]
},
"string-slashy": {
"patterns": [
{
"begin": "/(?=[^/]+/([^>]|$))",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.regexp.begin.groovy"
}
},
"end": "/",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.regexp.end.groovy"
}
},
"name": "string.regexp.groovy",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.groovy"
}
]
},
{
"begin": "~\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.regexp.begin.groovy"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.regexp.end.groovy"
}
},
"name": "string.regexp.compiled.groovy",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.groovy"
}
]
}
]
},
"strings": {
"patterns": [
{
"include": "#string-quoted-double-multiline"
},
{
"include": "#string-quoted-single-multiline"
},
{
"include": "#string-quoted-double"
},
{
"include": "#string-quoted-single"
},
{
"include": "#string-slashy"
}
]
},
"structures": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.structure.begin.groovy"
}
},
"end": "]",
"endCaptures": {
"0": {
"name": "punctuation.definition.structure.end.groovy"
}
},
"name": "meta.structure.groovy",
"patterns": [
{
"include": "#groovy-code"
},
{
"match": ",",
"name": "punctuation.definition.separator.groovy"
}
]
},
"types": {
"patterns": [
{
"match": "\\b(def)\\b",
"name": "storage.type.def.groovy"
},
{
"include": "#primitive-types"
},
{
"include": "#object-types"
}
]
},
"values": {
"patterns": [
{
"include": "#strings"
},
{
"include": "#numbers"
},
{
"include": "#constants"
},
{
"include": "#types"
},
{
"include": "#structures"
},
{
"include": "#method-call"
},
{
"include": "#constructor-call"
}
]
},
"variables": {
"patterns": [
{
"applyEndPatternLast": 1,
"begin": "(?=(?:def|(?:boolean|byte|char|short|int|float|long|double)|(?:[a-z]\\w*\\.)*[A-Z]+\\w*)\\s+[],<>\\[_\\w\\d\\s]+(?:=|$))",
"end": ";|$",
"name": "meta.definition.variable.groovy",
"patterns": [
{
"match": "\\s"
},
{
"captures": {
"1": {
"name": "constant.variable.groovy"
}
},
"match": "([0-9A-Z_]+)\\s+(?==)"
},
{
"captures": {
"1": {
"name": "meta.definition.variable.name.groovy"
}
},
"match": "(\\w[^,\\s]*)\\s+(?==)"
},
{
"captures": {
"1": {
"name": "storage.type.groovy"
}
},
"match": ": (\\w+)",
"patterns": [
{
"include": "#types"
}
]
},
{
"begin": "=",
"beginCaptures": {
"0": {
"name": "keyword.operator.assignment.groovy"
}
},
"end": "$",
"patterns": [
{
"include": "#groovy-code"
}
]
},
{
"captures": {
"1": {
"name": "meta.definition.variable.name.groovy"
}
},
"match": "(\\w[^=\\s]*)(?=\\s*($|;))"
},
{
"include": "#groovy-code"
}
]
}
]
}
},
"scopeName": "source.nextflow-groovy"
}