[{"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"}]