tm-grammars
Version:
Collecton of TextMate grammars in JSON
322 lines (321 loc) • 7.78 kB
JSON
{
"displayName": "Nextflow",
"name": "nextflow",
"patterns": [
{
"include": "#nextflow"
}
],
"repository": {
"enum-def": {
"begin": "^\\s*(enum)\\s+(\\w+)\\s*\\{",
"beginCaptures": {
"1": {
"name": "keyword.nextflow"
},
"2": {
"name": "storage.type.groovy"
}
},
"end": "}",
"patterns": [
{
"include": "source.nextflow-groovy#groovy"
},
{
"include": "#enum-values"
}
]
},
"enum-values": {
"patterns": [
{
"begin": "(?<=;|^)\\s*\\b([0-9A-Z_]+)(?=\\s*(?:[(,}]|$))",
"beginCaptures": {
"1": {
"name": "constant.enum.name.groovy"
}
},
"end": ",|(?=})|^(?!\\s*\\w+\\s*(?:,|$))",
"patterns": [
{
"begin": "\\(",
"end": "\\)",
"name": "meta.enum.value.groovy",
"patterns": [
{
"match": ",",
"name": "punctuation.definition.seperator.parameter.groovy"
},
{
"include": "#groovy-code"
}
]
}
]
}
]
},
"function-body": {
"patterns": [
{
"match": "\\s"
},
{
"begin": "(?=[<\\w][^(]*\\s+[$<\\w]+\\s*\\()",
"end": "(?=[$\\w]+\\s*\\()",
"name": "meta.method.return-type.java",
"patterns": [
{
"include": "source.nextflow-groovy#types"
}
]
},
{
"begin": "([$\\w]+)\\s*\\(",
"beginCaptures": {
"1": {
"name": "entity.name.function.nextflow"
}
},
"end": "\\)",
"name": "meta.definition.method.signature.java",
"patterns": [
{
"begin": "(?=[^)])",
"end": "(?=\\))",
"name": "meta.method.parameters.groovy",
"patterns": [
{
"begin": "(?=[^),])",
"end": "(?=[),])",
"name": "meta.method.parameter.groovy",
"patterns": [
{
"match": ",",
"name": "punctuation.definition.separator.groovy"
},
{
"begin": "=",
"beginCaptures": {
"0": {
"name": "keyword.operator.assignment.groovy"
}
},
"end": "(?=[),])",
"name": "meta.parameter.default.groovy",
"patterns": [
{
"include": "source.nextflow-groovy#groovy-code"
}
]
},
{
"include": "source.nextflow-groovy#parameters"
}
]
}
]
}
]
},
{
"begin": "(?=<)",
"end": "(?=\\s)",
"name": "meta.method.paramerised-type.groovy",
"patterns": [
{
"begin": "<",
"end": ">",
"name": "storage.type.parameters.groovy",
"patterns": [
{
"include": "source.nextflow-groovy#types"
},
{
"match": ",",
"name": "punctuation.definition.seperator.groovy"
}
]
}
]
},
{
"begin": "\\{",
"end": "(?=})",
"name": "meta.method.body.java",
"patterns": [
{
"include": "source.nextflow-groovy#groovy-code"
}
]
}
]
},
"function-def": {
"applyEndPatternLast": 1,
"begin": "(?<=;|^|\\{)(?=\\s*(?:def|(?:(?:boolean|byte|char|short|int|float|long|double)|@?(?:[A-Za-z]\\w*\\.)*[A-Z]+\\w*)[]\\[]*(?:<.*>)?n)\\s+([^=]+\\s+)?\\w+\\s*\\()",
"end": "}|(?=[^{])",
"name": "meta.definition.method.groovy",
"patterns": [
{
"include": "#function-body"
}
]
},
"include-decl": {
"patterns": [
{
"match": "^\\b(include)\\b",
"name": "keyword.nextflow"
},
{
"match": "\\b(from)\\b",
"name": "keyword.nextflow"
}
]
},
"nextflow": {
"patterns": [
{
"include": "#record-def"
},
{
"include": "#enum-def"
},
{
"include": "#function-def"
},
{
"include": "#process-def"
},
{
"include": "#workflow-def"
},
{
"include": "#params-def"
},
{
"include": "#output-def"
},
{
"include": "#include-decl"
},
{
"include": "source.nextflow-groovy"
}
]
},
"output-def": {
"begin": "^\\s*(output)\\s*\\{",
"beginCaptures": {
"1": {
"name": "keyword.nextflow"
}
},
"end": "}",
"name": "output.nextflow",
"patterns": [
{
"include": "source.nextflow-groovy#groovy"
}
]
},
"params-def": {
"begin": "^\\s*(params)\\s*\\{",
"beginCaptures": {
"1": {
"name": "keyword.nextflow"
}
},
"end": "}",
"name": "params.nextflow",
"patterns": [
{
"include": "source.nextflow-groovy#groovy"
}
]
},
"process-body": {
"patterns": [
{
"match": "(?:input|output|when|script|shell|exec):",
"name": "constant.block.nextflow"
},
{
"match": "\\b(val|env|file|path|stdin|stdout|tuple)([(\\s])",
"name": "entity.name.function.nextflow"
},
{
"include": "source.nextflow-groovy#groovy"
}
]
},
"process-def": {
"begin": "^\\s*(process)\\s+(\\w+)\\s*\\{",
"beginCaptures": {
"1": {
"name": "keyword.nextflow"
},
"2": {
"name": "entity.name.function.nextflow"
}
},
"end": "}",
"name": "process.nextflow",
"patterns": [
{
"include": "#process-body"
}
]
},
"record-def": {
"begin": "^\\s*(record)\\s+(\\w+)\\s*\\{",
"beginCaptures": {
"1": {
"name": "keyword.nextflow"
},
"2": {
"name": "storage.type.groovy"
}
},
"end": "}",
"name": "record.nextflow",
"patterns": [
{
"include": "source.nextflow-groovy#groovy"
}
]
},
"workflow-body": {
"patterns": [
{
"match": "(?:take|main|emit|publish):",
"name": "constant.block.nextflow"
},
{
"include": "source.nextflow-groovy#groovy"
}
]
},
"workflow-def": {
"begin": "^\\s*(workflow)(?:\\s+(\\w+))?\\s*\\{",
"beginCaptures": {
"1": {
"name": "keyword.nextflow"
},
"2": {
"name": "entity.name.function.nextflow"
}
},
"end": "}",
"name": "workflow.nextflow",
"patterns": [
{
"include": "#workflow-body"
}
]
}
},
"scopeName": "source.nextflow"
}