kjelsrud.dev/node_modules/shiki/languages/mermaid.tmLanguage.json
2023-07-19 21:31:30 +02:00

1343 lines
42 KiB
JSON

{
"fileTypes": ["mermaid"],
"patterns": [
{
"include": "#mermaid"
}
],
"repository": {
"mermaid": {
"patterns": [
{
"comment": "Class Diagram",
"begin": "^\\s*(classDiagram)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"comment": "(class name) (\"multiplicity relationship\")? (relationship) (\"multiplicity relationship\")? (class name) :? (labelText)?",
"match": "([\\w-]+)\\s(\"(?:\\d+|\\*|0..\\d+|1..\\d+|1..\\*)\")?\\s?(--o|--\\*|\\<--|--\\>|<\\.\\.|\\.\\.\\>|\\<\\|\\.\\.|\\.\\.\\|\\>|\\<\\|--|--\\|>|--\\*|--|\\.\\.|\\*--|o--)\\s(\"(?:\\d+|\\*|0..\\d+|1..\\d+|1..\\*)\")?\\s?([\\w-]+)\\s?(:)?\\s(.*)$",
"captures": {
"1": {
"name": "entity.name.type.class.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "keyword.control.mermaid"
},
"5": {
"name": "entity.name.type.class.mermaid"
},
"6": {
"name": "keyword.control.mermaid"
},
"7": {
"name": "string"
}
}
},
{
"comment": "(class name) : (visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$",
"match": "([\\w-]+)\\s?(:)\\s([\\+~#-])?([\\w-]+)(\\()([\\w-]+)?(~)?([\\w-]+)?(~)?\\s?([\\w-]+)?(\\))([*\\$])?\\s?([\\w-]+)?(~)?([\\w-]+)?(~)?$",
"captures": {
"1": {
"name": "entity.name.type.class.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "entity.name.function.mermaid"
},
"5": {
"name": "punctuation.parenthesis.open.mermaid"
},
"6": {
"name": "storage.type.mermaid"
},
"7": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"8": {
"name": "storage.type.mermaid"
},
"9": {
"name": "punctuation.definition.typeparameters.end.mermaid"
},
"10": {
"name": "entity.name.variable.parameter.mermaid"
},
"11": {
"name": "punctuation.parenthesis.closed.mermaid"
},
"12": {
"name": "keyword.control.mermaid"
},
"13": {
"name": "storage.type.mermaid"
},
"14": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"15": {
"name": "storage.type.mermaid"
},
"16": {
"name": "punctuation.definition.typeparameters.end.mermaid"
}
}
},
{
"comment": "(class name) : (visibility)?(datatype/generic data type) (attribute name)$",
"match": "([\\w-]+)\\s?(:)\\s([\\+~#-])?([\\w-]+)(~)?([\\w-]+)?(~)?\\s([\\w-]+)?$",
"captures": {
"1": {
"name": "entity.name.type.class.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "storage.type.mermaid"
},
"5": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"6": {
"name": "storage.type.mermaid"
},
"7": {
"name": "punctuation.definition.typeparameters.end.mermaid"
},
"8": {
"name": "entity.name.variable.field.mermaid"
}
}
},
{
"comment": "<<(Annotation)>> (class name)",
"match": "(<<)([\\w-]+)(>>)\\s?([\\w-]+)?",
"captures": {
"1": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"2": {
"name": "storage.type.mermaid"
},
"3": {
"name": "punctuation.definition.typeparameters.end.mermaid"
},
"4": {
"name": "entity.name.type.class.mermaid"
}
}
},
{
"comment": "class (class name) ~?(generic type)?~? ({)",
"begin": "(class)\\s+([\\w-]+)(~)?([\\w-]+)?(~)?\\s?({)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "entity.name.type.class.mermaid"
},
"3": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"4": {
"name": "storage.type.mermaid"
},
"5": {
"name": "punctuation.definition.typeparameters.end.mermaid"
},
"6": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"comment": "(visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$",
"begin": "\\s([\\+~#-])?([\\w-]+)(\\()",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "entity.name.function.mermaid"
},
"3": {
"name": "punctuation.parenthesis.open.mermaid"
}
},
"patterns": [
{
"comment": "(TBD)",
"match": "\\s*,?\\s*([\\w-]+)?(~)?([\\w-]+)?(~)?\\s?([\\w-]+)?",
"captures": {
"1": {
"name": "storage.type.mermaid"
},
"2": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"3": {
"name": "storage.type.mermaid"
},
"4": {
"name": "punctuation.definition.typeparameters.end.mermaid"
},
"5": {
"name": "entity.name.variable.parameter.mermaid"
}
}
}
],
"end": "(\\))([*\\$])?\\s?([\\w-]+)?(~)?([\\w-]+)?(~)?$",
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.closed.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "storage.type.mermaid"
},
"4": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"5": {
"name": "storage.type.mermaid"
},
"6": {
"name": "punctuation.definition.typeparameters.end.mermaid"
}
}
},
{
"comment": "(visibility)?(datatype/generic data type) (attribute name)$",
"match": "\\s([\\+~#-])?([\\w-]+)(~)?([\\w-]+)?(~)?\\s([\\w-]+)?$",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "storage.type.mermaid"
},
"3": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"4": {
"name": "storage.type.mermaid"
},
"5": {
"name": "punctuation.definition.typeparameters.end.mermaid"
},
"6": {
"name": "entity.name.variable.field.mermaid"
}
}
},
{
"comment": "<<(Annotation)>> (class name)",
"match": "(<<)([\\w-]+)(>>)\\s?([\\w-]+)?",
"captures": {
"1": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"2": {
"name": "storage.type.mermaid"
},
"3": {
"name": "punctuation.definition.typeparameters.end.mermaid"
},
"4": {
"name": "entity.name.type.class.mermaid"
}
}
}
],
"end": "(})",
"endCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "class (class name) ~?(generic type)?~?",
"match": "(class)\\s+([\\w-]+)(~)?([\\w-]+)?(~)?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "entity.name.type.class.mermaid"
},
"3": {
"name": "punctuation.definition.typeparameters.begin.mermaid"
},
"4": {
"name": "storage.type.mermaid"
},
"5": {
"name": "punctuation.definition.typeparameters.end.mermaid"
}
}
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
},
{
"comment": "Entity Relationship Diagram",
"begin": "^\\s*(erDiagram)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"comment": "(entity)",
"match": "^\\s*([\\w-]+)$",
"name": "variable"
},
{
"comment": "(entity) {",
"begin": "\\s+([\\w-]+)\\s+({)",
"beginCaptures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"comment": "(type) (name) (PK|FK)? (\"comment\")?",
"match": "\\s*([\\w-]+)\\s+([\\w-]+)\\s+(PK|FK)?\\s*(\"[\"\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*\")?\\s*",
"captures": {
"1": {
"name": "storage.type.mermaid"
},
"2": {
"name": "variable"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "string"
}
}
}
],
"end": "(})",
"endCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "(entity) (relationship) (entity) : (label)",
"match": "\\s*([\\w-]+)\\s+((?:\\|o|\\|\\||}o|}\\|)(?:..|--)(?:o\\||\\|\\||o{|\\|{))\\s+([\\w-]+)\\s+(:)\\s+((?:\"[\\w\\s]*\")|(?:[\\w-]+))",
"captures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "variable"
},
"4": {
"name": "keyword.control.mermaid"
},
"5": {
"name": "string"
}
}
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
},
{
"comment": "Gantt Diagram",
"begin": "^\\s*(gantt)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"match": "(dateFormat)\\s+([\\w\\-\\.]+)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "entity.name.function.mermaid"
}
}
},
{
"match": "(axisFormat)\\s+([\\w\\%\\/\\\\\\-\\.]+)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "entity.name.function.mermaid"
}
}
},
{
"match": "(title)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
}
}
},
{
"match": "(excludes)\\s+((?:[\\d\\-,\\s]+|monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekends)+)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
}
}
},
{
"match": "^\\s+(todayMarker)\\s+(.*)$",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
}
}
},
{
"match": "(section)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
}
}
},
{
"begin": "^\\s(.*)(:)",
"beginCaptures": {
"1": {
"name": "string"
},
"2": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "(crit|done|active|after)",
"name": "entity.name.function.mermaid"
},
{
"match": "\\%%.*",
"name": "comment"
}
],
"end": "$"
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
},
{
"comment": "Git Graph",
"begin": "^\\s*(gitGraph)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"comment": "commit",
"begin": "\\s*(commit)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"comment": "(id)(:) (\"id\")",
"match": "\\s*(id)(:)\\s?(\"[^\"\\n]*\")",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "string"
}
}
},
{
"comment": "(type)(:) (COMMIT_TYPE)",
"match": "\\s*(type)(:)\\s?(NORMAL|REVERSE|HIGHLIGHT)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "entity.name.function.mermaid"
}
}
},
{
"comment": "(tag)(:) (\"tag\")",
"match": "\\s*(tag)(:)\\s?(\"[\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*\")",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "string"
}
}
}
],
"end": "$"
},
{
"comment": "(checkout) (branch-name)",
"match": "\\s*(checkout)\\s*([^\\s\"]*)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
}
}
},
{
"comment": "(branch) (branch-name) (order)?(:) (number)",
"match": "\\s*(branch)\\s*([^\\s\"]*)\\s*(?:(order)(:)\\s?(\\d+))?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "keyword.control.mermaid"
},
"5": {
"name": "constant.numeric.decimal.mermaid"
}
}
},
{
"comment": "(merge) (branch-name) (tag: \"tag-name\")?",
"match": "\\s*(merge)\\s*([^\\s\"]*)\\s*(?:(tag)(:)\\s?(\"[^\"\\n]*\"))?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "keyword.control.mermaid"
},
"5": {
"name": "string"
}
}
},
{
"comment": "(cherry-pick) (id)(:)(\"commit-id\")",
"match": "\\s*(cherry-pick)\\s+(id)(:)\\s*(\"[^\"\\n]*\")",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "string"
}
}
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
},
{
"comment": "Graph",
"begin": "^\\s*(graph|flowchart)\\s+([\\p{Letter}\\ 0-9]+)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "entity.name.function.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"match": "\\b(subgraph)\\s+([\\p{Letter}\\ 0-9]+)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "entity.name.function.mermaid"
}
},
"name": "meta.function.mermaid"
},
{
"match": "\\b(end|RB|BT|RL|TD|LR)\\b",
"name": "keyword.control.mermaid"
},
{
"comment": "(Entity)(Edge/Shape)(Text)(Edge/Shape)",
"begin": "(\\b(?:(?!--|==)[-\\w])+\\b\\s*)(\\(\\[|\\[\\[|\\[\\(|\\[|\\(+|\\>|\\{|\\(\\()",
"beginCaptures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "string"
}
},
"patterns": [
{
"comment": "(\"multi-line text\")",
"begin": "\\s*(\")",
"beginCaptures": {
"1": {
"name": "string"
}
},
"patterns": [
{
"comment": "capture inner text between quotes",
"begin": "([^\"]*)",
"beginCaptures": {
"1": {
"name": "string"
}
},
"patterns": [
{
"match": "([^\"]*)",
"captures": {
"1": {
"name": "comment"
}
}
}
],
"end": "(?=\")"
}
],
"end": "(\")",
"endCaptures": {
"1": {
"name": "string"
}
}
},
{
"comment": "(single line text)",
"match": "\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)",
"captures": {
"1": {
"name": "string"
}
}
}
],
"end": "(\\]\\)|\\]\\]|\\)\\]|\\]|\\)+|\\}|\\)\\))",
"endCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "(Graph Link)(\"Multiline text\")(Graph Link)",
"begin": "\\s*((?:-{2,5}|={2,5})[xo>]?\\|)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"comment": "(\"multi-line text\")",
"begin": "\\s*(\")",
"beginCaptures": {
"1": {
"name": "string"
}
},
"patterns": [
{
"comment": "capture inner text between quotes",
"begin": "([^\"]*)",
"beginCaptures": {
"1": {
"name": "string"
}
},
"patterns": [
{
"match": "([^\"]*)",
"captures": {
"1": {
"name": "comment"
}
}
}
],
"end": "(?=\")"
}
],
"end": "(\")",
"endCaptures": {
"1": {
"name": "string"
}
}
},
{
"comment": "(single line text)",
"match": "\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)",
"captures": {
"1": {
"name": "string"
}
}
}
],
"end": "(\\|)",
"endCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "(Graph Link Start Arrow)(Text)(Graph Link End Arrow)",
"match": "\\s*([xo<]?(?:-{2,5}|={2,5}|-\\.{1,3}|-\\.))((?:(?!--|==)[\\w\\s*+%=\\\\/:\\.\\-'`,\"&^#$!?])*)((?:-{2,5}|={2,5}|\\.{1,3}-|\\.-)[xo>]?)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
},
"3": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "(Graph Link)",
"match": "\\s*([ox<]?(?:-.{1,3}-|-{1,3}|={1,3})[ox>]?)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "Entity",
"match": "(\\b(?:(?!--|==)[-\\w])+\\b\\s*)",
"name": "variable"
},
{
"comment": "(Class)(Node(s))(ClassName)",
"match": "\\s*(class)\\s+(\\b[-,\\w]+)\\s+(\\b\\w+\\b)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
},
"3": {
"name": "string"
}
}
},
{
"comment": "(ClassDef)(ClassName)(Styles)",
"match": "\\s*(classDef)\\s+(\\b\\w+\\b)\\s+(\\b[-,:;#\\w]+)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
},
"3": {
"name": "string"
}
}
},
{
"comment": "(Click)(Entity)(Link)?(Tooltip)",
"match": "\\s*(click)\\s+(\\b[-\\w]+\\b\\s*)(\\b\\w+\\b)?\\s(\"*.*\")",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
},
"3": {
"name": "variable"
},
"4": {
"name": "string"
}
}
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
},
{
"comment": "Pie Chart",
"begin": "^\\s*(pie)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"match": "(title)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
}
}
},
{
"begin": "\\s(.*)(:)",
"beginCaptures": {
"1": {
"name": "string"
},
"2": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
}
],
"end": "$"
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
},
{
"comment": "Sequence Diagram",
"begin": "^\\s*(sequenceDiagram)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "(\\%%|#).*",
"name": "comment"
},
{
"comment": "(title)(title text)",
"match": "(title)\\s*(:)?\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!:*+=<>\\'\\\\\\-\\w\\s]*)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "string"
}
}
},
{
"comment": "(participant)(Actor)(as)?(Label)?",
"match": "\\s*(participant|actor)\\s+((?:(?! as )[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s])+)\\s*(as)?\\s([\"\\(\\)$&%\\^/#.,?!*=<>\\'\\\\\\w\\s]+)?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "string"
}
}
},
{
"comment": "(activate/deactivate)(Actor)",
"match": "\\s*((?:de)?activate)\\s+(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
}
}
},
{
"comment": "(Note)(direction)(Actor)(,)?(Actor)?(:)(Message)",
"match": "\\s*(Note)\\s+((?:left|right)\\sof|over)\\s+(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)(,)?(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)?(:)(?:\\s+([^;#]*))?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "entity.name.function.mermaid"
},
"3": {
"name": "variable"
},
"4": {
"name": "keyword.control.mermaid"
},
"5": {
"name": "variable"
},
"6": {
"name": "keyword.control.mermaid"
},
"7": {
"name": "string"
}
}
},
{
"comment": "(loop)(loop text)",
"match": "\\s*(loop)(?:\\s+([^;#]*))?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
}
}
},
{
"comment": "(end)",
"match": "\\s*(end)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "(alt/else/opt/par/and/autonumber)(text)",
"match": "\\s*(alt|else|opt|par|and|rect|autonumber)(?:\\s+([^#;]*))?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
}
}
},
{
"comment": "(Actor)(Arrow)(Actor)(:)(Message)",
"match": "\\s*(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b)\\s*(-?-(?:\\>|x|\\))\\>?[+-]?)\\s*([\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b)\\s*(:)\\s*([^;#]*)",
"captures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "variable"
},
"4": {
"name": "keyword.control.mermaid"
},
"5": {
"name": "string"
}
}
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
},
{
"comment": "State Diagram",
"begin": "^\\s*(stateDiagram(?:-v2)?)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"comment": "}",
"match": "\\s+(})\\s+",
"captures": {
"1": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "--",
"match": "\\s+(--)\\s+",
"captures": {
"1": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "(state)",
"match": "^\\s*([\\w-]+)$",
"name": "variable"
},
{
"comment": "(state) : (description)",
"match": "([\\w-]+)\\s+(:)\\s+(\\s*[-\\w\\s]+\\b)",
"captures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "string"
}
}
},
{
"comment": "state",
"begin": "(state)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"comment": "\"(description)\" as (state)",
"match": "\\s+(\"[-\\w\\s]+\\b\")\\s+(as)\\s+([\\w-]+)",
"captures": {
"1": {
"name": "string"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "variable"
}
}
},
{
"comment": "(state name) {",
"match": "\\s+([\\w-]+)\\s+({)",
"captures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
}
}
},
{
"comment": "(state name) <<fork|join>>",
"match": "\\s+([\\w-]+)\\s+(<<(?:fork|join)>>)",
"captures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
}
}
}
],
"end": "$"
},
{
"comment": "(state) -->",
"begin": "([\\w-]+)\\s+(-->)",
"beginCaptures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"comment": "(state) (:)? (transition text)?",
"match": "\\s+([\\w-]+)\\s*(:)?\\s*([^\\n:]+)?",
"captures": {
"1": {
"name": "variable"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "string"
}
}
},
{
"comment": "[*] (:)? (transition text)?",
"match": "(\\[\\*\\])\\s*(:)?\\s*([^\\n:]+)?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "string"
}
}
}
],
"end": "$"
},
{
"comment": "[*] --> (state) (:)? (transition text)?",
"match": "(\\[\\*\\])\\s+(-->)\\s+([\\w-]+)\\s*(:)?\\s*([^\\n:]+)?",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "variable"
},
"4": {
"name": "keyword.control.mermaid"
},
"5": {
"name": "string"
}
}
},
{
"comment": "note left|right of (state name)",
"match": "(note (?:left|right) of)\\s+([\\w-]+)\\s+(:)\\s*([^\\n:]+)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
},
"3": {
"name": "keyword.control.mermaid"
},
"4": {
"name": "string"
}
}
},
{
"comment": "note left|right of (state name) (note text) end note",
"begin": "(note (?:left|right) of)\\s+([\\w-]+)(.|\\n)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "variable"
}
},
"contentName": "string",
"end": "(end note)",
"endCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
}
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
},
{
"comment": "User Journey",
"begin": "^\\s*(journey)",
"beginCaptures": {
"1": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"match": "\\%%.*",
"name": "comment"
},
{
"match": "(title|section)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
"captures": {
"1": {
"name": "keyword.control.mermaid"
},
"2": {
"name": "string"
}
}
},
{
"begin": "\\s*([\"\\(\\)$&%\\^/.,?!*+=<>\\'\\\\\\-\\w\\s]*)\\s*(:)\\s*(\\d+)\\s*(:)",
"beginCaptures": {
"1": {
"name": "string"
},
"2": {
"name": "keyword.control.mermaid"
},
"3": {
"name": "constant.numeric.decimal.mermaid"
},
"4": {
"name": "keyword.control.mermaid"
}
},
"patterns": [
{
"comment": "(taskName)",
"match": "\\s*,?\\s*([^,#\\n]+)",
"captures": {
"1": {
"name": "variable"
}
}
}
],
"end": "$"
}
],
"end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
}
]
}
},
"scopeName": "source.mermaid",
"name": "mermaid"
}