├── .prettierignore
├── .gitignore
├── .vscode
└── settings.json
├── .prettierrc
├── mermaid-language-configuration.json
├── images
├── graph.png
├── adoSyntax.png
├── erDiagram.png
├── gitGraph.png
├── mindmap.png
├── pieChart.png
├── userJourney.png
├── architecture.png
├── classDiagram.png
├── ganttDiagram.png
├── icon
│ ├── iconPNG.png
│ ├── magnifyingGlass.svg
│ ├── mermaidTail.svg
│ └── iconSVG.svg
├── quadrantChart.png
├── stateDiagram.png
├── sequenceDiagram.png
└── requirementsDiagram.png
├── syntaxes
├── mermaid.tmLanguage.yaml
├── diagrams
│ ├── pieChart.yaml
│ ├── userJourney.yaml
│ ├── mindmap.yaml
│ ├── quadrantChart.yaml
│ ├── ganttDiagram.yaml
│ ├── erDiagram.yaml
│ ├── architecture.yaml
│ ├── gitGraph.yaml
│ ├── sequenceDiagram.yaml
│ ├── requirementDiagram.yaml
│ ├── xyChart.yaml
│ ├── stateDiagram.yaml
│ ├── graph.yaml
│ └── classDiagram.yaml
├── mermaid.tmLanguage-markdown.yaml
└── mermaid.tmLanguage-mdx.yaml
├── tests
├── diagrams
│ ├── graph-flowchart.test.mermaid
│ ├── state-v2.test.mermaid
│ ├── pie.test.mermaid
│ ├── userJourney.test.mermaid
│ ├── mindmap.test.mermaid
│ ├── quadrantChart.test.mermaid
│ ├── xychart.test.mermaid
│ ├── gitGraph.test.mermaid
│ ├── architecture.test.mermaid
│ ├── gantt.test.mermaid
│ ├── state.test.mermaid
│ ├── sequence.test.mermaid
│ ├── requirement.test.mermaid
│ ├── er.test.mermaid
│ ├── class.test.mermaid
│ └── graph.test.mermaid
└── markdown
│ ├── mdx.test.mdx
│ ├── ado-markdown.test.md
│ ├── basic.test.mermaid
│ ├── with-attributes.test.md
│ └── markdown-multiple.test.md
├── .github
└── workflows
│ ├── master-merge.yml
│ └── github-pr.yml
├── LICENSE
├── CONTRIBUTING.md
├── package.json
├── README.md
└── CHANGELOG.md
/.prettierignore:
--------------------------------------------------------------------------------
1 | # Ignore test files
2 | tests/**/*.md
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | out
3 | *.vsix
4 | pnpm-lock.yaml
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "yaml.customTags": [
3 | "!regex scalar"
4 | ]
5 | }
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "tabWidth": 2,
3 | "useTabs": false,
4 | "singleQuote": true
5 | }
6 |
--------------------------------------------------------------------------------
/mermaid-language-configuration.json:
--------------------------------------------------------------------------------
1 | {
2 | "comments": {
3 | "lineComment": "%%"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/images/graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/graph.png
--------------------------------------------------------------------------------
/images/adoSyntax.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/adoSyntax.png
--------------------------------------------------------------------------------
/images/erDiagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/erDiagram.png
--------------------------------------------------------------------------------
/images/gitGraph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/gitGraph.png
--------------------------------------------------------------------------------
/images/mindmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/mindmap.png
--------------------------------------------------------------------------------
/images/pieChart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/pieChart.png
--------------------------------------------------------------------------------
/images/userJourney.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/userJourney.png
--------------------------------------------------------------------------------
/images/architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/architecture.png
--------------------------------------------------------------------------------
/images/classDiagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/classDiagram.png
--------------------------------------------------------------------------------
/images/ganttDiagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/ganttDiagram.png
--------------------------------------------------------------------------------
/images/icon/iconPNG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/icon/iconPNG.png
--------------------------------------------------------------------------------
/images/quadrantChart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/quadrantChart.png
--------------------------------------------------------------------------------
/images/stateDiagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/stateDiagram.png
--------------------------------------------------------------------------------
/images/sequenceDiagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/sequenceDiagram.png
--------------------------------------------------------------------------------
/images/requirementsDiagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/HEAD/images/requirementsDiagram.png
--------------------------------------------------------------------------------
/syntaxes/mermaid.tmLanguage.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | fileTypes:
3 | - mermaid
4 | patterns:
5 | - include: '#mermaid'
6 | repository:
7 | mermaid:
8 | patterns: !!import/deep
9 | - diagrams/
10 | scopeName: source.mermaid
11 |
--------------------------------------------------------------------------------
/tests/diagrams/graph-flowchart.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "graph flowchart test"
2 |
3 | flowchart TB
4 | ID-1[Node 1]
5 | %%^^^^ variable
6 | %% ^ keyword.control.mermaid
7 | %% ^^^^^^ string
8 | %% ^ keyword.control.mermaid
--------------------------------------------------------------------------------
/tests/diagrams/state-v2.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "state diagram v2 test"
2 |
3 | stateDiagram-v2
4 | %% <--------------- keyword.control.mermaid
5 | s1
6 | %%^^ variable
7 | s1 --> s2
8 | %%^^ variable
9 | %% ^^^ keyword.control.mermaid
10 | %% ^^ variable
--------------------------------------------------------------------------------
/tests/markdown/mdx.test.mdx:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "mdx.mermaid.codeblock"
2 |
3 | ```mermaid
4 | graph LR
5 | %% <----- keyword.control.mermaid
6 | %% ^^ entity.name.function.mermaid
7 | A --> B
8 | %%^ variable
9 | %% ^^^ keyword.control.mermaid
10 | %% ^ variable
11 | ```
12 |
--------------------------------------------------------------------------------
/tests/markdown/ado-markdown.test.md:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "markdown.mermaid.codeblock" "ado markdown test"
2 |
3 | ::: mermaid
4 | graph LR
5 | %% <----- keyword.control.mermaid
6 | %% ^^ entity.name.function.mermaid
7 | A --> B
8 | %%^ variable
9 | %% ^^^ keyword.control.mermaid
10 | %% ^ variable
11 | :::
--------------------------------------------------------------------------------
/tests/markdown/basic.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "markdown.mermaid.codeblock" "basic markdown test"
2 |
3 | ```mermaid
4 | graph LR
5 | %% <----- keyword.control.mermaid
6 | %% ^^ entity.name.function.mermaid
7 | A --> B
8 | %%^ variable
9 | %% ^^^ keyword.control.mermaid
10 | %% ^ variable
11 | ```
--------------------------------------------------------------------------------
/tests/markdown/with-attributes.test.md:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "markdown.mermaid.codeblock" "with attributes markdown test"
2 |
3 | ```{ .mermaid caption="test" #fig:graph}
4 | graph LR
5 | %% <----- keyword.control.mermaid
6 | %% ^^ entity.name.function.mermaid
7 | A --> B
8 | %%^ variable
9 | %% ^^^ keyword.control.mermaid
10 | %% ^ variable
11 | ```
--------------------------------------------------------------------------------
/images/icon/magnifyingGlass.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/pieChart.yaml:
--------------------------------------------------------------------------------
1 | - comment: Pie Chart
2 | begin: ^\s*(pie)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - match: !regex |-
10 | ^\s*(title)\s+ # title
11 | (\s*["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # text
12 | captures:
13 | '1':
14 | name: keyword.control.mermaid
15 | '2':
16 | name: string
17 | - begin: !regex |-
18 | \s(.*) # DataKey Text
19 | (:) # :
20 | beginCaptures:
21 | '1':
22 | name: string
23 | '2':
24 | name: keyword.control.mermaid
25 | patterns:
26 | - match: \%%.*
27 | name: comment
28 | end: '$'
29 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
30 |
--------------------------------------------------------------------------------
/tests/diagrams/pie.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "pie diagram test"
2 |
3 | pie
4 | %%% <--- keyword.control.mermaid
5 | title Key elements in Product X
6 | %%^^^^^ keyword.control.mermaid
7 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^ string
8 | "Calcium" : 42.96
9 | %% ^^^^^^^^^ string
10 | %% ^ keyword.control.mermaid
11 | %% ^^^^^ source.mermaid
12 | "Potassium" : 50.05
13 | %% ^^^^^^^^^^^ string
14 | %% ^ keyword.control.mermaid
15 | %% ^^^^^ source.mermaid
16 | "Magnesium" : 10.01
17 | %% ^^^^^^^^^^^ string
18 | %% ^ keyword.control.mermaid
19 | %% ^^^^^ source.mermaid
20 | "Iron" : 5
21 | %% ^^^^^^ string
22 | %% ^ keyword.control.mermaid
23 | %% ^ source.mermaid
24 |
25 | %% negative cases
26 | invalid title invalid
27 | %%^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
28 |
--------------------------------------------------------------------------------
/.github/workflows/master-merge.yml:
--------------------------------------------------------------------------------
1 | # Deploy to VS Marketplace on master merge as long as the version has
2 | # changed (inferred by a change to CHANGELOG.md)
3 |
4 | name: 'Github Master Merge'
5 |
6 | on:
7 | push:
8 | branches: master
9 | paths:
10 | - 'CHANGELOG.md'
11 |
12 | jobs:
13 | deploy:
14 | runs-on: ubuntu-latest
15 | strategy:
16 | matrix:
17 | node-version: [22]
18 | steps:
19 | - name: Checkout
20 | uses: actions/checkout@v4
21 |
22 | - name: Setup Node.js ${{ matrix.node-version }}
23 | uses: actions/setup-node@v4
24 | with:
25 | node-version: ${{ matrix.node-version }}
26 | cache: npm
27 |
28 | - name: Install
29 | run: npm ci
30 |
31 | - name: Publish to Visual Studio Marketplace
32 | uses: HaaLeo/publish-vscode-extension@v1
33 | with:
34 | pat: ${{ secrets.VS_MARKETPLACE_TOKEN }}
35 | registryUrl: https://marketplace.visualstudio.com
36 |
--------------------------------------------------------------------------------
/syntaxes/mermaid.tmLanguage-markdown.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | fileTypes: []
3 | injectionSelector: L:text.html.markdown
4 | patterns:
5 | - include: '#mermaid-code-block'
6 | - include: '#mermaid-code-block-with-attributes'
7 | - include: '#mermaid-ado-code-block'
8 | repository:
9 | mermaid-code-block:
10 | begin: (?i)(?<=[`~])\s*mermaid(\s+[^`~]*)?$
11 | end: (^|\G)(?=\s*[`~]{3,}\s*$)
12 | contentName: 'meta.embedded.block.mermaid'
13 | patterns:
14 | - include: '#mermaid'
15 | mermaid-code-block-with-attributes:
16 | begin: (?i)(?<=[`~])\s*\{\s*\.?mermaid(\s+[^`~]*)?$
17 | end: (^|\G)(?=\s*[`~]{3,}\s*$)
18 | contentName: 'meta.embedded.block.mermaid'
19 | patterns:
20 | - include: '#mermaid'
21 | mermaid-ado-code-block:
22 | begin: (?i)\s*:::\s*mermaid\s*$
23 | end: \s*:::\s*
24 | contentName: 'meta.embedded.block.mermaid'
25 | patterns:
26 | - include: '#mermaid'
27 | mermaid:
28 | patterns: !!import/deep
29 | - diagrams/
30 | scopeName: markdown.mermaid.codeblock
31 |
--------------------------------------------------------------------------------
/tests/diagrams/userJourney.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "user journey test"
2 |
3 | journey
4 | %%%%%%% <--- keyword.control.mermaid
5 | title My working day
6 | %%^^^^^ keyword.control.mermaid
7 | %% ^^^^^^^^^^^^^^ string
8 | section Go to work
9 | %%^^^^^^^ keyword.control.mermaid
10 | %% ^^^^^^^^^^ string
11 | Make tea: 5: Me
12 | %% ^^^^^^^^ string
13 | %% ^ keyword.control.mermaid
14 | %% ^ constant.numeric.decimal.mermaid
15 | %% ^ keyword.control.mermaid
16 | %% ^^ variable
17 | Do work: 1: Me, My Cat~=*%[]`&^$!"()
18 | %% ^^^^^^^ string
19 | %% ^ keyword.control.mermaid
20 | %% ^ constant.numeric.decimal.mermaid
21 | %% ^ keyword.control.mermaid
22 | %% ^^ variable
23 | %% ^ source.mermaid
24 | %% ^^^^^^^^^^^^^^^^^^ variable
25 |
26 | %% negative cases
27 | invalid title text
28 | %%^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
29 | invalid section text
30 | %%^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Brian Pruitt-Goddard
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/userJourney.yaml:
--------------------------------------------------------------------------------
1 | - comment: User Journey
2 | begin: ^\s*(journey)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - match: !regex |-
10 | ^\s*(title|section)\s+ # title or section
11 | (\s*["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # text
12 | captures:
13 | '1':
14 | name: keyword.control.mermaid
15 | '2':
16 | name: string
17 | - begin: !regex |-
18 | \s*(["\(\)$&%\^/.,?!*+=<>\'\\\-\w\s]*) # (task name)
19 | \s*(:) # (:)
20 | \s*(\d+) # (score)
21 | \s*(:) # (:)
22 | beginCaptures:
23 | '1':
24 | name: string
25 | '2':
26 | name: keyword.control.mermaid
27 | '3':
28 | name: constant.numeric.decimal.mermaid
29 | '4':
30 | name: keyword.control.mermaid
31 | patterns:
32 | - comment: (taskName)
33 | match: !regex |-
34 | \s*,?\s*([^,#\n]+) # task name
35 | captures:
36 | '1':
37 | name: variable
38 | end: $
39 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
40 |
--------------------------------------------------------------------------------
/.github/workflows/github-pr.yml:
--------------------------------------------------------------------------------
1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3 |
4 | name: 'Github PR CI'
5 |
6 | on:
7 | push:
8 | tags:
9 | - "*"
10 | branches:
11 | - "*"
12 | pull_request:
13 | branches:
14 | - "*"
15 |
16 | jobs:
17 | build:
18 | runs-on: ubuntu-latest
19 | strategy:
20 | matrix:
21 | node-version: [22]
22 | steps:
23 | - name: Checkout
24 | uses: actions/checkout@v4
25 |
26 | - name: Prettier check
27 | uses: creyD/prettier_action@v4.3
28 | with:
29 | dry: true
30 | prettier_options: --check **/*.{js,yaml,md}
31 |
32 | - name: Setup Node.js ${{ matrix.node-version }}
33 | uses: actions/setup-node@v4
34 | with:
35 | node-version: ${{ matrix.node-version }}
36 | cache: npm
37 |
38 | - name: Install
39 | run: npm ci
40 |
41 | - name: Convert Yaml
42 | run: npm run convertYaml
43 |
44 | - name: Test
45 | run: npm test
46 |
--------------------------------------------------------------------------------
/tests/diagrams/mindmap.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "mindmap diagram test"
2 |
3 | mindmap
4 | %%<------- keyword.control.mermaid
5 | %% comment
6 | %%^^^^^^^^^^ comment
7 | root
8 | %%^^^^ string
9 | id[I am a square]
10 | %%^^ variable
11 | %% ^ keyword.control.mermaid
12 | %% ^^^^^^^^^^^^^ string
13 | %% ^ keyword.control.mermaid
14 | id(I am a rounded square)
15 | %%^^ variable
16 | %% ^ keyword.control.mermaid
17 | %% ^^^^^^^^^^^^^^^^^^^^^ string
18 | %% ^ keyword.control.mermaid
19 | id((I am a circle))
20 | %%^^ variable
21 | %% ^^ keyword.control.mermaid
22 | %% ^^^^^^^^^^^^^ string
23 | %% ^^ keyword.control.mermaid
24 | id))I am a bang((
25 | %%^^ variable
26 | %% ^^ keyword.control.mermaid
27 | %% ^^^^^^^^^^^ string
28 | %% ^^ keyword.control.mermaid
29 | id)I am a cloud(
30 | %%^^ variable
31 | %% ^ keyword.control.mermaid
32 | %% ^^^^^^^^^^^^ string
33 | %% ^ keyword.control.mermaid
34 | id{{I am a hexagon}}
35 | %%^^ variable
36 | %% ^^ keyword.control.mermaid
37 | %% ^^^^^^^^^^^^^^ string
38 | %% ^^ keyword.control.mermaid
39 | ::icon(fa fa-book)
40 | %%^^^^^^ keyword.control.mermaid
41 | %% ^ punctuation.parenthesis.open.mermaid
42 | %% ^^^^^^^^^^ string
43 | %% ^ punctuation.parenthesis.close.mermaid
44 | :::urgent large
45 | %%^^^ keyword.control.mermaid
46 | %% ^^^^^^^^^^^^ string
47 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/mindmap.yaml:
--------------------------------------------------------------------------------
1 | - comment: Mindmap Diagram
2 | begin: ^\s*(mindmap)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - comment: :::Text
10 | match: !regex |-
11 | (\s*:::) # :::
12 | (\s*["$&\^/#.,?!;*+=<>\'\\\-\w\s]*) # Text
13 | captures:
14 | '1':
15 | name: keyword.control.mermaid
16 | '2':
17 | name: string
18 | - comment: ::icon(Text)
19 | match: !regex |-
20 | (\s*::icon) # ::icon
21 | (\s*\() # (
22 | (\s*["$&\^/#.,?!;*+=<>\'\\\-\w\s]*) # Text
23 | (\s*\)) # )
24 | captures:
25 | '1':
26 | name: keyword.control.mermaid
27 | '2':
28 | name: punctuation.parenthesis.open.mermaid
29 | '3':
30 | name: string
31 | '4':
32 | name: punctuation.parenthesis.close.mermaid
33 | - comment: (Id)(Shape Start)(Text)(Shape End)
34 | match: !regex |-
35 | (\s*["$&\^/#.,?!;:*+=<>\'\\\-\w\s]*) # Id
36 | (\s*\({1,2}|\){1,2}|\{\{|\[) # Start Shape
37 | (\s*["$&\^/#.,?!;:*+=<>\'\\\-\w\s]*) # Text
38 | (\s*\){1,2}|\({1,2}|\}\}|\]) # End Shape
39 | captures:
40 | '1':
41 | name: variable
42 | '2':
43 | name: keyword.control.mermaid
44 | '3':
45 | name: string
46 | '4':
47 | name: keyword.control.mermaid
48 | - match: ^(\s*["$&\^/#.,?!;:*+=<>\'\\\-\w\s]*)
49 | name: string
50 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
51 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | ## Building
2 |
3 | The grammars for each diagram type reside in `syntaxes/diagrams` in separate files.
4 |
5 | To test changes locally:
6 |
7 | 1. Build the theme and create the vsix package by running:
8 |
9 | ```sh
10 | npm install
11 | npx @vscode/vsce package
12 | ```
13 |
14 | 2. Install the theme locally by using the `Install from VSIX` command. This may require reloading VS Code to see the changes.
15 |
16 | ## Testing
17 |
18 | There are tests validating the grammar that can be triggered by running:
19 |
20 | ```sh
21 | npm test
22 | ```
23 |
24 | The tests will validate the grammar for all diagrams. Note this does _not_ build the grammar, this will need to be done if changes have been made to the `yaml`. To test and build, run:
25 |
26 | ```sh
27 | npm run convertYaml && npm test
28 | ```
29 |
30 | ## Developing
31 |
32 | The grammar includes a custom yaml type `regex`. This should be used for all but the simplest regex expressions. It was created to allow the regex to be multiline (with no whitespace between lines) and in-line comments that are stripped from the json. To use it, prepend `!regex` as seen below:
33 |
34 | ```yaml
35 | reg: !regex |-
36 | # Comment
37 | \s*(class)\s+ # explanation
38 | (\b[-,\w]+)\s+ # comment
39 | ```
40 |
41 | Becomes:
42 |
43 | ```json
44 | {
45 | "reg": "\\s*(class)\\s+(\\b[-,\\w]+)\\s+"
46 | }
47 | ```
48 |
49 | Instead of:
50 |
51 | ```json
52 | {
53 | "reg": "# Comment\n\\s*(class)\\s+ # explanation\n(\\b[-,\\w]+)\\s+ # comment"
54 | }
55 | ```
56 |
57 | This is useful for splitting out sections of the regex (such as capture groups) and commenting on what each group should be matching.
58 |
--------------------------------------------------------------------------------
/syntaxes/mermaid.tmLanguage-mdx.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | fileTypes: []
3 | injectionSelector: L:source.mdx
4 | patterns:
5 | - include: '#mermaid-code-block'
6 | repository:
7 | mermaid-code-block:
8 | patterns:
9 | - begin:
10 | "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?mermaid))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t
11 | ]*$)"
12 | beginCaptures:
13 | 1:
14 | name: string.other.begin.code.fenced.mdx
15 | 2:
16 | name: entity.name.function.mdx
17 | contentName: meta.embedded.mermaid
18 | end: "(\\1)(?:[\\t ]*$)"
19 | endCaptures:
20 | 1:
21 | name: string.other.end.code.fenced.mdx
22 | name: markup.code.mermaid.mdx
23 | patterns:
24 | - begin: "(^|\\G)(\\s*)(.*)"
25 | while: "(^|\\G)(?!\\s*([`~]{3,})\\s*$)"
26 | patterns:
27 | - contentName: meta.embedded.block.mermaid
28 | include: source.mermaid
29 | - begin:
30 | "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?mermaid))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t
31 | ]*$)"
32 | beginCaptures:
33 | 1:
34 | name: string.other.begin.code.fenced.mdx
35 | 2:
36 | name: entity.name.function.mdx
37 | contentName: meta.embedded.mermaid
38 | end: "(\\1)(?:[\\t ]*$)"
39 | endCaptures:
40 | 1:
41 | name: string.other.end.code.fenced.mdx
42 | name: markup.code.mermaid.mdx
43 | patterns:
44 | - begin: "(^|\\G)(\\s*)(.*)"
45 | while: "(^|\\G)(?!\\s*([`~]{3,})\\s*$)"
46 | patterns: !!import/deep
47 | - diagrams/
48 | scopeName: mdx.mermaid.codeblock
49 |
--------------------------------------------------------------------------------
/tests/markdown/markdown-multiple.test.md:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "markdown.mermaid.codeblock" "multiple markdown block test"
2 |
3 | ::: mermaid
4 | graph LR
5 | %% <----- keyword.control.mermaid
6 | %% ^^ entity.name.function.mermaid
7 | A --> B
8 | %%^ variable
9 | %% ^^^ keyword.control.mermaid
10 | %% ^ variable
11 | :::
12 |
13 | Parantaa endpointin toimivuutta ennaltamaar
14 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <--- meta.paragraph.markdown
15 | tosiparemmilla looppi rectangulaareilla
16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <--- meta.paragraph.markdown
17 |
18 | :::mermaid
19 | sequenceDiagram
20 | %% <-------------- keyword.control.mermaid
21 | participant S as S
22 | %%^^^^^^^^^^^ keyword.control.mermaid
23 | %% ^ variable
24 | %% ^^ keyword.control.mermaid
25 | %% ^ string
26 | :::
27 |
28 | Parantaa endpointin toimivuutta ennaltamaar
29 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <--- meta.paragraph.markdown
30 | tosiparemmilla looppi rectangulaareilla
31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <--- meta.paragraph.markdown
32 |
33 | ``` mermaid
34 | graph LR
35 | %% <----- keyword.control.mermaid
36 | %% ^^ entity.name.function.mermaid
37 | A --> B
38 | %%^ variable
39 | %% ^^^ keyword.control.mermaid
40 | %% ^ variable
41 | ```
42 |
43 | Parantaa endpointin toimivuutta ennaltamaar
44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <--- meta.paragraph.markdown
45 | tosiparemmilla looppi rectangulaareilla
46 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <--- meta.paragraph.markdown
47 |
48 | ```mermaid
49 | sequenceDiagram
50 | %% <-------------- keyword.control.mermaid
51 | participant S as S
52 | %%^^^^^^^^^^^ keyword.control.mermaid
53 | %% ^ variable
54 | %% ^^ keyword.control.mermaid
55 | %% ^ string
56 | ```
57 |
58 | Parantaa endpointin toimivuutta ennaltamaar
59 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <--- meta.paragraph.markdown
60 | tosiparemmilla looppi rectangulaareilla
61 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <--- meta.paragraph.markdown
62 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/quadrantChart.yaml:
--------------------------------------------------------------------------------
1 | - comment: Quadrant Chart
2 | begin: ^\s*(quadrantChart)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - match: !regex |-
10 | ^\s*(title) # title
11 | \s*(["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # text
12 | captures:
13 | '1':
14 | name: keyword.control.mermaid
15 | '2':
16 | name: string
17 | - comment: '(x|y-axis) (text) (-->)? (text)?'
18 | begin: !regex |-
19 | ^\s*([xy]-axis) # x|y-axis
20 | \s+((?:(?!-->)[$&%/#.,?!*+=\'\\\-\w\s])*) # text
21 | beginCaptures:
22 | '1':
23 | name: keyword.control.mermaid
24 | '2':
25 | name: string
26 | patterns:
27 | - comment: (-->) (text)
28 | match: !regex |-
29 | \s*(-->) # -->
30 | \s*([$&%/#.,?!*+=\'\\\-\w\s]*) # text
31 | captures:
32 | '1':
33 | name: keyword.control.mermaid
34 | '2':
35 | name: string
36 | end: '$'
37 | - match: !regex |-
38 | ^\s*(quadrant-[1234]) # quadrant-x
39 | \s*(["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # text
40 | captures:
41 | '1':
42 | name: keyword.control.mermaid
43 | '2':
44 | name: string
45 | - comment: (text)(:) ([)(decimal)(,) (decimal)(])
46 | match: !regex |-
47 | \s*([$&%/#.,?!*+=\'\\\-\w\s]*) # text
48 | \s*(:) # :
49 | \s*(\[) # [
50 | \s*(\d\.\d+) # decimal
51 | \s*(,) # ,
52 | \s*(\d\.\d+) # decimal
53 | \s*(\]) # ]
54 | captures:
55 | '1':
56 | name: string
57 | '2':
58 | name: keyword.control.mermaid
59 | '3':
60 | name: keyword.control.mermaid
61 | '4':
62 | name: constant.numeric.decimal.mermaid
63 | '5':
64 | name: keyword.control.mermaid
65 | '6':
66 | name: constant.numeric.decimal.mermaid
67 | '7':
68 | name: keyword.control.mermaid
69 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
70 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/ganttDiagram.yaml:
--------------------------------------------------------------------------------
1 | - comment: Gantt Diagram
2 | begin: ^\s*(gantt)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - match: !regex |-
10 | ^\s*(dateFormat)\s+ # dateFormat
11 | ([\w\-\.]+) # format
12 | captures:
13 | '1':
14 | name: keyword.control.mermaid
15 | '2':
16 | name: entity.name.function.mermaid
17 | - match: !regex |-
18 | ^\s*(axisFormat)\s+ # axisFormat
19 | ([\w\%\/\\\-\.]+) # format
20 | captures:
21 | '1':
22 | name: keyword.control.mermaid
23 | '2':
24 | name: entity.name.function.mermaid
25 | - match: !regex |-
26 | (tickInterval)\s+ # tickInterval
27 | (([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)) # format
28 | captures:
29 | '1':
30 | name: keyword.control.mermaid
31 | '2':
32 | name: string
33 | - match: !regex |-
34 | ^\s*(title)\s+ # title
35 | (\s*["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # text
36 | captures:
37 | '1':
38 | name: keyword.control.mermaid
39 | '2':
40 | name: string
41 | - match: !regex |-
42 | ^\s*(excludes)\s+ # excludes
43 | ((?:[\d\-,\s]+|monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekends)+) # date or weekday
44 | captures:
45 | '1':
46 | name: keyword.control.mermaid
47 | '2':
48 | name: string
49 | - match: !regex |-
50 | ^\s+(todayMarker)\s+ # todayMarker
51 | (.*)$ # "off" or styles
52 | captures:
53 | '1':
54 | name: keyword.control.mermaid
55 | '2':
56 | name: string
57 | - match: !regex |-
58 | ^\s*(section)\s+ # section
59 | (\s*["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # text
60 | captures:
61 | '1':
62 | name: keyword.control.mermaid
63 | '2':
64 | name: string
65 | - begin: !regex |-
66 | ^\s(.*) # Task Text
67 | (:) # :
68 | beginCaptures:
69 | '1':
70 | name: string
71 | '2':
72 | name: keyword.control.mermaid
73 | patterns:
74 | - match: (crit|done|active|after)
75 | name: entity.name.function.mermaid
76 | - match: \%%.*
77 | name: comment
78 | end: '$'
79 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
80 |
--------------------------------------------------------------------------------
/tests/diagrams/quadrantChart.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "quadrant chart test"
2 |
3 | quadrantChart
4 | %% <------------------ keyword.control.mermaid
5 | %% a comment
6 | %% ^^^^^^^^^^^^ comment
7 | title Reach and engagement of campaigns
8 | %% ^^^^^ keyword.control.mermaid
9 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
10 | x-axis Low Reach$&%/#.,?!*+='\-
11 | %% ^^^^^^ keyword.control.mermaid
12 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ string
13 | x-axis Low Reach --> High Reach
14 | %% ^^^^^^ keyword.control.mermaid
15 | %% ^^^^^^^^^ string
16 | %% ^^^ keyword.control.mermaid
17 | %% ^^^^^^^^^^ string
18 | y-axis Low Engagement
19 | %% ^^^^^^ keyword.control.mermaid
20 | %% ^^^^^^^^^^^^^^ string
21 | y-axis Low Engagement --> High Engagement
22 | %% ^^^^^^ keyword.control.mermaid
23 | %% ^^^^^^^^^^^^^^ string
24 | %% ^^^ keyword.control.mermaid
25 | %% ^^^^^^^^^^^^^^^ string
26 | quadrant-1 We should expand
27 | %% ^^^^^^^^^^ keyword.control.mermaid
28 | %% ^^^^^^^^^^^^^^^^ string
29 | quadrant-2 Need to promote
30 | %% ^^^^^^^^^^ keyword.control.mermaid
31 | %% ^^^^^^^^^^^^^^^ string
32 | quadrant-3 Re-evaluate
33 | %% ^^^^^^^^^^ keyword.control.mermaid
34 | %% ^^^^^^^^^^^ string
35 | quadrant-4 May be improved
36 | %% ^^^^^^^^^^ keyword.control.mermaid
37 | %% ^^^^^^^^^^^^^^^ string
38 | Campaign A: [0.3, 0.6]
39 | %% ^^^^^^^^^^ string
40 | %% ^ keyword.control.mermaid
41 | %% ^ keyword.control.mermaid
42 | %% ^^^ constant.numeric.decimal.mermaid
43 | %% ^ keyword.control.mermaid
44 | %% ^^^ constant.numeric.decimal.mermaid
45 | %% ^ keyword.control.mermaid
46 | Campaign B: [0.45, 0.23]
47 | %% ^^^^^^^^^^ string
48 | %% ^ keyword.control.mermaid
49 | %% ^ keyword.control.mermaid
50 | %% ^^^^ constant.numeric.decimal.mermaid
51 | %% ^ keyword.control.mermaid
52 | %% ^^^^ constant.numeric.decimal.mermaid
53 | %% ^ keyword.control.mermaid
54 |
55 | %% negative cases
56 | invalid title invalid
57 | %% ^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
58 | invalid x-axis text
59 | %% ^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
60 | invalid quadrant-1 text
61 | %% ^^^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
62 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mermaid-markdown-syntax-highlighting",
3 | "displayName": "Mermaid Markdown Syntax Highlighting",
4 | "description": "Markdown syntax support for the Mermaid charting language",
5 | "icon": "images/icon/iconPNG.png",
6 | "version": "1.7.6",
7 | "publisher": "bpruitt-goddard",
8 | "license": "MIT",
9 | "type": "module",
10 | "engines": {
11 | "vscode": "^1.19.0",
12 | "node": ">=22.0.0"
13 | },
14 | "categories": [
15 | "Other"
16 | ],
17 | "contributes": {
18 | "languages": [
19 | {
20 | "id": "mermaid",
21 | "extensions": [
22 | ".mmd",
23 | ".mermaid"
24 | ],
25 | "configuration": "./mermaid-language-configuration.json"
26 | }
27 | ],
28 | "grammars": [
29 | {
30 | "language": "mermaid",
31 | "scopeName": "markdown.mermaid.codeblock",
32 | "path": "./out/mermaid.tmLanguage-markdown.json"
33 | },
34 | {
35 | "scopeName": "markdown.mermaid.codeblock",
36 | "path": "./out/mermaid.tmLanguage-markdown.json",
37 | "injectTo": [
38 | "text.html.markdown"
39 | ],
40 | "embeddedLanguages": {
41 | "meta.embedded.block.mermaid": "mermaid"
42 | }
43 | },
44 | {
45 | "scopeName": "mdx.mermaid.codeblock",
46 | "path": "./out/mermaid.tmLanguage-mdx.json",
47 | "injectTo": [
48 | "source.mdx"
49 | ],
50 | "embeddedLanguages": {
51 | "mdx.embedded.mermaid": "mermaid"
52 | }
53 | },
54 | {
55 | "language": "mermaid",
56 | "scopeName": "source.mermaid",
57 | "path": "./out/mermaid.tmLanguage.json"
58 | }
59 | ]
60 | },
61 | "bugs": {
62 | "url": "https://github.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/issues"
63 | },
64 | "homepage": "https://github.com/bpruitt-goddard/vscode-mermaid-syntax-highlight/blob/master/README.md",
65 | "repository": {
66 | "type": "git",
67 | "url": "https://github.com/bpruitt-goddard/vscode-mermaid-syntax-highlight.git"
68 | },
69 | "keywords": [
70 | "mermaid"
71 | ],
72 | "scripts": {
73 | "convertYaml": "node build/ConvertYaml.mjs",
74 | "format:write": "prettier --write syntaxes",
75 | "test": "vscode-tmgrammar-test \"tests/**/*.test.{mermaid,md,mdx}\"",
76 | "vscode:prepublish": "npm run convertYaml"
77 | },
78 | "devDependencies": {
79 | "fs-extra": "^11.2.0",
80 | "js-yaml": "^4.1.1",
81 | "prettier": "^3.3.3",
82 | "vscode-tmgrammar-test": "^0.1.3",
83 | "yaml-import": "^3.0.0"
84 | },
85 | "__metadata": {
86 | "id": "08792992-bb56-41fb-b5dd-8551bbee0cb6",
87 | "publisherDisplayName": "Brian Pruitt-Goddard",
88 | "publisherId": "79536266-6400-41d0-b043-2af5390d2788"
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/erDiagram.yaml:
--------------------------------------------------------------------------------
1 | - comment: Entity Relationship Diagram
2 | begin: ^\s*(erDiagram)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - comment: '(entity)'
10 | match: !regex |-
11 | ^\s*([\w-]+) # entity name
12 | \s*(\[)? # [
13 | \s*((?:[\w-]+)|(?:"[\w\s-]+"))? # alias
14 | \s*(\])? # ]
15 | $ # end of line
16 | captures:
17 | '1':
18 | name: variable
19 | '2':
20 | name: keyword.control.mermaid
21 | '3':
22 | name: string
23 | '4':
24 | name: keyword.control.mermaid
25 | - comment: '(entity) {'
26 | begin: !regex |-
27 | \s*([\w-]+) # entity name
28 | \s*(\[)? # [
29 | \s*((?:[\w-]+)|(?:"[\w\s-]+"))? # alias
30 | \s*(\])? # ]
31 | \s*({) # {
32 | beginCaptures:
33 | '1':
34 | name: variable
35 | '2':
36 | name: keyword.control.mermaid
37 | '3':
38 | name: string
39 | '4':
40 | name: keyword.control.mermaid
41 | '5':
42 | name: keyword.control.mermaid
43 | patterns:
44 | - comment: '(type) (name) (constraints)? ("comment")?'
45 | match: !regex |-
46 | \s*([\w-]+)\s+ # type
47 | ([\w-]+)\s+ # name
48 | ([PFU]K(?:,\s*[PFU]K){0,2})?\s* # key?
49 | ("[^"\r\n]*")?\s* # comment?
50 | captures:
51 | '1':
52 | name: storage.type.mermaid
53 | '2':
54 | name: variable
55 | '3':
56 | name: keyword.control.mermaid
57 | '4':
58 | name: string
59 | - match: \%%.*
60 | name: comment
61 | end: (})
62 | endCaptures:
63 | '1':
64 | name: keyword.control.mermaid
65 | - comment: '(entity) (relationship) (entity) : (label)'
66 | match: !regex |-
67 | \s*([\w-]+)\s* # entity
68 | ((?:\|o|\|\||}o|}\||one or (?:zero|more|many)|zero or (?:one|more|many)|many\((?:0|1)\)|only one|0\+|1\+?) #relationship left
69 | (?:..|--) # relationship identification
70 | (?:o\||\|\||o{|\|{|one or (?:zero|more|many)|zero or (?:one|more|many)|many\((?:0|1)\)|only one|0\+|1\+?))\s* # relationship right
71 | ([\w-]+)\s* # entity
72 | (:)\s* # :
73 | ((?:"[\w\s]*")|(?:[\w-]+)) # label
74 | captures:
75 | '1':
76 | name: variable
77 | '2':
78 | name: keyword.control.mermaid
79 | '3':
80 | name: variable
81 | '4':
82 | name: keyword.control.mermaid
83 | '5':
84 | name: string
85 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
86 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/architecture.yaml:
--------------------------------------------------------------------------------
1 | - comment: Architecture Diagram
2 | begin: ^\s*(architecture-beta)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - comment: '(group|service)(group id)(icon name)?(title)(in)?(parent)?'
10 | match: !regex |-
11 | \s*(group|service) # group | service
12 | \s+([\w-]+) # id
13 | \s*(\()? # (
14 | ([\w\s-]+)? # logo option
15 | (:)? # :
16 | ([\w\s-]+)? # icon name
17 | (\))? # )
18 | \s*(\[)? # [
19 | ([\w\s-]+)? # title
20 | \s*(\])? # ]
21 | \s*(in)? # in
22 | \s*([\w-]+)? # parent
23 | captures:
24 | '1':
25 | name: keyword.control.mermaid
26 | '2':
27 | name: variable
28 | '3':
29 | name: punctuation.definition.typeparameters.begin.mermaid
30 | '4':
31 | name: string
32 | '5':
33 | name: keyword.control.mermaid
34 | '6':
35 | name: string
36 | '7':
37 | name: punctuation.definition.typeparameters.end.mermaid
38 | '8':
39 | name: punctuation.definition.typeparameters.begin.mermaid
40 | '9':
41 | name: string
42 | '10':
43 | name: punctuation.definition.typeparameters.end.mermaid
44 | '11':
45 | name: keyword.control.mermaid
46 | '12':
47 | name: variable
48 | - comment: '(service id)(group id)?:(T|B|L|R) -->? (T|B|L|R):(service id)(group id)?'
49 | match: !regex |-
50 | \s*([\w-]+) # service id
51 | \s*(\{)? # {
52 | \s*(group)? # group
53 | (\})? # }
54 | \s*(:) # :
55 | \s*(T|B|L|R) # Direction
56 | \s+(-->?) # Arrow
57 | \s+(T|B|L|R) # Direction
58 | \s*(:) # :
59 | \s*([\w-]+) # service id
60 | \s*(\{)? # {
61 | \s*(group)? # group id
62 | (\})? # }
63 | captures:
64 | '1':
65 | name: variable
66 | '2':
67 | name: punctuation.definition.typeparameters.begin.mermaid
68 | '3':
69 | name: variable
70 | '4':
71 | name: punctuation.definition.typeparameters.end.mermaid
72 | '5':
73 | name: keyword.control.mermaid
74 | '6':
75 | name: entity.name.function.mermaid
76 | '7':
77 | name: keyword.control.mermaid
78 | '8':
79 | name: entity.name.function.mermaid
80 | '9':
81 | name: keyword.control.mermaid
82 | '10':
83 | name: variable
84 | '11':
85 | name: punctuation.definition.typeparameters.begin.mermaid
86 | '12':
87 | name: variable
88 | '13':
89 | name: punctuation.definition.typeparameters.end.mermaid
90 | - comment: '(junction)(junction id)(in)?(group)'
91 | match: !regex |-
92 | \s*(junction) # junction
93 | \s+([\w-]+) # id
94 | \s*(in)? # in
95 | \s*([\w-]+)? # group
96 | captures:
97 | '1':
98 | name: keyword.control.mermaid
99 | '2':
100 | name: variable
101 | '3':
102 | name: keyword.control.mermaid
103 | '4':
104 | name: variable
105 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
106 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/gitGraph.yaml:
--------------------------------------------------------------------------------
1 | - comment: Git Graph
2 | begin: ^\s*(gitGraph)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - comment: commit
10 | begin: !regex |-
11 | ^\s*(commit) # commit
12 | beginCaptures:
13 | '1':
14 | name: keyword.control.mermaid
15 | patterns:
16 | - comment: '(id)(:) ("id")'
17 | match: !regex |-
18 | \s*(id) # id
19 | (:) # :
20 | \s?("[^"\n]*") # text
21 | captures:
22 | '1':
23 | name: keyword.control.mermaid
24 | '2':
25 | name: keyword.control.mermaid
26 | '3':
27 | name: string
28 | - comment: '(type)(:) (COMMIT_TYPE)'
29 | match: !regex |-
30 | \s*(type) # type
31 | (:) # :
32 | \s?(NORMAL|REVERSE|HIGHLIGHT) # commit_type
33 | captures:
34 | '1':
35 | name: keyword.control.mermaid
36 | '2':
37 | name: keyword.control.mermaid
38 | '3':
39 | name: entity.name.function.mermaid
40 | - comment: '(tag)(:) ("tag")'
41 | match: !regex |-
42 | \s*(tag) # tag
43 | (:) # :
44 | \s?("[\($&%\^/#.,?!;:*+=<>\'\\\-\w\s]*") # text
45 | captures:
46 | '1':
47 | name: keyword.control.mermaid
48 | '2':
49 | name: keyword.control.mermaid
50 | '3':
51 | name: string
52 | end: '$'
53 | - comment: '(checkout) (branch-name)'
54 | match: !regex |-
55 | ^\s*(checkout) # checkout
56 | \s*([^\s"]*) # branch-name
57 | captures:
58 | '1':
59 | name: keyword.control.mermaid
60 | '2':
61 | name: variable
62 | - comment: '(branch) (branch-name) (order)?(:) (number)'
63 | match: !regex |-
64 | ^\s*(branch) # branch
65 | \s*([^\s"]*) # branch-name
66 | \s*(?:(order)(:)\s?(\d+))? # (order)(:) (number)
67 | captures:
68 | '1':
69 | name: keyword.control.mermaid
70 | '2':
71 | name: variable
72 | '3':
73 | name: keyword.control.mermaid
74 | '4':
75 | name: keyword.control.mermaid
76 | '5':
77 | name: constant.numeric.decimal.mermaid
78 | - comment: '(merge) (branch-name) (tag: "tag-name")?'
79 | match: !regex |-
80 | ^\s*(merge) # merge
81 | \s*([^\s"]*) # branch-name
82 | \s*(?:(tag)(:)\s?("[^"\n]*"))? # (tag: "tag-name")?
83 | captures:
84 | '1':
85 | name: keyword.control.mermaid
86 | '2':
87 | name: variable
88 | '3':
89 | name: keyword.control.mermaid
90 | '4':
91 | name: keyword.control.mermaid
92 | '5':
93 | name: string
94 | - comment: '(cherry-pick) (id)(:)("commit-id")'
95 | match: !regex |-
96 | ^\s*(cherry-pick) # cherry-pick
97 | \s+(id) # id
98 | (:) # :
99 | \s*("[^"\n]*") # "commit-id"
100 | captures:
101 | '1':
102 | name: keyword.control.mermaid
103 | '2':
104 | name: keyword.control.mermaid
105 | '3':
106 | name: keyword.control.mermaid
107 | '4':
108 | name: string
109 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
110 |
--------------------------------------------------------------------------------
/tests/diagrams/xychart.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "xy chart test"
2 |
3 | xychart-beta
4 | %%% <--- keyword.control.mermaid
5 | title Chess ELO rating over time
6 | %%^^^^^ keyword.control.mermaid
7 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^ string
8 |
9 | x-axis Day
10 | %%^^^^^^ keyword.control.mermaid
11 | %% ^^^ string
12 |
13 | x-axis 1 --> 10
14 | %%^^^^^^ keyword.control.mermaid
15 | %% ^ constant.numeric.decimal.mermaid
16 | %% ^^^ keyword.control.mermaid
17 | %% ^^ constant.numeric.decimal.mermaid
18 |
19 | x-axis "Day" 1.0 --> 10.0
20 | %%^^^^^^ keyword.control.mermaid
21 | %% ^^^^^ string
22 | %% ^^^ constant.numeric.decimal.mermaid
23 | %% ^^^ keyword.control.mermaid
24 | %% ^^^^ constant.numeric.decimal.mermaid
25 |
26 | x-axis "Day" 1 --> 10
27 | %%^^^^^^ keyword.control.mermaid
28 | %% ^^^^^ string
29 | %% ^ constant.numeric.decimal.mermaid
30 | %% ^^^ keyword.control.mermaid
31 | %% ^^ constant.numeric.decimal.mermaid
32 |
33 | x-axis "Day of the month" 1 --> 10
34 | %%^^^^^^ keyword.control.mermaid
35 | %% ^^^^^^^^^^^^^^^^^^ string
36 | %% ^ constant.numeric.decimal.mermaid
37 | %% ^^^ keyword.control.mermaid
38 | %% ^^ constant.numeric.decimal.mermaid
39 |
40 | x-axis "Day of week" ["Mon"]
41 | %%^^^^^^ keyword.control.mermaid
42 | %% ^^^^^^^^^^^^^ string
43 | %% ^ keyword.control.mermaid
44 | %% ^^^^^ string
45 | %% ^ keyword.control.mermaid
46 |
47 | x-axis "Day of week" ["Mon", "Tue",Wed]
48 | %%^^^^^^ keyword.control.mermaid
49 | %% ^^^^^^^^^^^^^ string
50 | %% ^ keyword.control.mermaid
51 | %% ^^^^^ string
52 | %% ^ keyword.control.mermaid
53 | %% ^^^^^ string
54 | %% ^ keyword.control.mermaid
55 | %% ^^^ string
56 | %% ^ keyword.control.mermaid
57 |
58 | y-axis ELO
59 | %%^^^^^^ keyword.control.mermaid
60 | %% ^^^ string
61 |
62 | y-axis 1000 --> 2000
63 | %%^^^^^^ keyword.control.mermaid
64 | %% ^^^^ constant.numeric.decimal.mermaid
65 | %% ^^^ keyword.control.mermaid
66 | %% ^^^^ constant.numeric.decimal.mermaid
67 |
68 | y-axis "ELO" 1000 --> 2000
69 | %%^^^^^^ keyword.control.mermaid
70 | %% ^^^^^ string
71 | %% ^^^^ constant.numeric.decimal.mermaid
72 | %% ^^^ keyword.control.mermaid
73 | %% ^^^^ constant.numeric.decimal.mermaid
74 |
75 | line [1,-2,+3, 4]
76 | %%^^^^ keyword.control.mermaid
77 | %% ^ keyword.control.mermaid
78 | %% ^ constant.numeric.decimal.mermaid
79 | %% ^ keyword.control.mermaid
80 | %% ^^ constant.numeric.decimal.mermaid
81 | %% ^ keyword.control.mermaid
82 | %% ^^ constant.numeric.decimal.mermaid
83 | %% ^ keyword.control.mermaid
84 | %% ^ constant.numeric.decimal.mermaid
85 | %% ^ keyword.control.mermaid
86 |
87 | bar [1,-2,+3, 4]
88 | %%^^^ keyword.control.mermaid
89 | %% ^ keyword.control.mermaid
90 | %% ^ constant.numeric.decimal.mermaid
91 | %% ^ keyword.control.mermaid
92 | %% ^^ constant.numeric.decimal.mermaid
93 | %% ^ keyword.control.mermaid
94 | %% ^^ constant.numeric.decimal.mermaid
95 | %% ^ keyword.control.mermaid
96 | %% ^ constant.numeric.decimal.mermaid
97 | %% ^ keyword.control.mermaid
98 |
99 | %% negative cases
100 | invalid title invalid
101 | %%^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
102 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vscode-mermaid-syntax-highlight
2 |
3 | Syntax support for the [Mermaid charting language](https://github.com/knsv/mermaid)
4 |
5 | [](https://marketplace.visualstudio.com/items?itemName=bpruitt-goddard.mermaid-markdown-syntax-highlighting) [](https://marketplace.visualstudio.com/items?itemName=bpruitt-goddard.mermaid-markdown-syntax-highlighting) [](https://marketplace.visualstudio.com/items?itemName=bpruitt-goddard.mermaid-markdown-syntax-highlighting)
6 |
7 | Supports both fenced markdown (see screenshots), and mmd files.
8 |
9 | ## Screenshots/Diagrams
10 |
11 | ### Graph
12 |
13 |
14 |
15 | ### Sequence
16 |
17 |
18 |
19 | ### Gantt
20 |
21 |
22 |
23 | ### Pie
24 |
25 |
26 |
27 | ### Class Diagram
28 |
29 |
30 |
31 | ### State Diagram
32 |
33 |
34 |
35 | ### Entity Relationship Diagrams
36 |
37 |
38 |
39 | ### Git Graph
40 |
41 |
42 |
43 | ### User Journey
44 |
45 |
46 |
47 | ### Requirements Diagram
48 |
49 |
50 |
51 | ### Quadrant Chart
52 |
53 |
54 |
55 | ### Architecture Diagram
56 |
57 |
58 |
59 | ### Mindmap Diagram
60 |
61 |
62 |
63 | ### ADO Support
64 |
65 | Supports highlighting in Azure Dev Ops (ADO) colon syntax:
66 |
67 |
68 |
69 | ## Initial Idea
70 |
71 | Based on the starter language support repo [here](https://github.com/mjbvz/vscode-fenced-code-block-grammar-injection-example), and initially created based on the Atom language support [here](https://github.com/ytisf/language-mermaid).
72 |
73 | ## Contributing
74 |
75 | For information on how to build/test/contribute, see the [Contributing Guide](CONTRIBUTING.md).
76 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | ## [v1.7.6]
4 |
5 | - Add mindmap diagram support
6 |
7 | ## [v1.7.5]
8 |
9 | - Support whitespace in markdown code block header before Mermaid language specifier
10 | - Support unindented entities (ER)
11 | - Allow more characters in entity attribute comment (ER)
12 |
13 | ## [v1.7.4]
14 |
15 | - Support multiple constraints (ER)
16 |
17 | ## [v1.7.3]
18 |
19 | State diagram:
20 |
21 | - Add support for direction
22 | - Add support for symbols in state description
23 | - Adjust requirements for spaces in state and note declarations and links
24 |
25 | ## [v1.7.2]
26 |
27 | - Add support for a dotted link syntax variation without leading dash
28 |
29 | ## [v1.7.1]
30 |
31 | - Add support for extended node shapes (graph/flowchart)
32 |
33 | ## [v1.7.0]
34 |
35 | - Add architecture diagram support
36 |
37 | ## [v1.6.7]
38 |
39 | - Add support for ER diagram named aliases
40 |
41 | ## [v1.6.6]
42 |
43 | - Add support for Mermaid code blocks in MDX
44 |
45 | ## [v1.6.5]
46 |
47 | - Add xy chart support
48 |
49 | ## [v1.6.4]
50 |
51 | - Make all keywords case-insensitive
52 | - Fix graph subgraph direction
53 |
54 | ## [v1.6.3]
55 |
56 | - Add quadrant chart support
57 |
58 | ## [v1.6.2]
59 |
60 | - Add requirement diagram support
61 |
62 | ## [v1.6.1]
63 |
64 | - Add sequence diagram box support
65 | - Fix case insensitive code block
66 | - Add gannt diagram tickInterval support
67 | - Fix graph text with html tags
68 |
69 | ## [v1.6.0]
70 |
71 | - Add support for pandoc code blocks syntax
72 | - Improve ER diagram relationship alias support
73 | - Improve ER diagram whitespace sensitivity
74 | - Add Class diagram abstract static method support
75 |
76 | ## [v1.5.3]
77 |
78 | - Fix sequence actors matching ending parentheses
79 | - Add sequence critical
80 |
81 | ## [v1.5.2]
82 |
83 | - Add gantt excludes and todaymarker
84 | - Improve gantt dateformat and axisformat support
85 |
86 | ## [v1.5.1]
87 |
88 | - Add fancy extension icons
89 | - Fix ADO highlighting not closing properly
90 | - Add chinese character support to graph subgraphs
91 |
92 | ## [v1.5.0]
93 |
94 | - Add user journey support
95 |
96 | ## [v1.4.2]
97 |
98 | - Add graph multiline entity support
99 |
100 | ## [v1.4.1]
101 |
102 | - Add missing graph entity shapes
103 |
104 | ## [v1.4.0]
105 |
106 | - Add git graph support
107 |
108 | ## [v1.3.4]
109 |
110 | - Fix sequence diagram title whitespace
111 | - Fix sequence diagram actor/participant whitespace
112 |
113 | ## [v1.3.3]
114 |
115 | - Add sequence diagram actor support
116 |
117 | ## [v1.3.2]
118 |
119 | - Add graph diagram double arrow support
120 | - Add class diagram multiple parameter support
121 |
122 | ## [v1.3.1]
123 |
124 | - Add classDiagram reversed arrow support
125 |
126 | ## [v1.3.0]
127 |
128 | - Add entity relationship diagram support
129 |
130 | ## [v1.2.4]
131 |
132 | - Add ADO syntax support
133 |
134 | ## [v1.2.3]
135 |
136 | - Fix bug preventing .mmd files from being properly highlighted
137 | - Add support in graphs for nodes with id only
138 |
139 | ## [v1.2.2]
140 |
141 | - Fix bug in new prepublish build step causing extension to break
142 |
143 | ## [v1.2.1]
144 |
145 | - Update sequence diagram support with:
146 | - Async arrows
147 | - Autonumber
148 | - Par blocks
149 | - Rect (color) blocks
150 |
151 | ## [v1.2.0]
152 |
153 | - Add state diagram support
154 |
155 | ## [v1.1.0]
156 |
157 | - Add class diagram support
158 |
159 | ## [v1.0.5]
160 |
161 | - Add basic flowchart support
162 |
163 | ## [v1.0.4]
164 |
165 | - Fix sequence diagram entity text highlighting
166 |
167 | ## [v1.0.3]
168 |
169 | - Fix sequence diagram participant label highlighting
170 |
171 | ## [v1.0.2]
172 |
173 | - Add pie chart support
174 |
175 | ## [v1.0.1]
176 |
177 | - Allow more punctuation in graph and gantt text
178 |
179 | ## [v1.0.0]
180 |
181 | - Added gantt support, completing support for all 3 graph types
182 |
183 | ## [v0.0.2]
184 |
185 | - Add support for complex graph cases
186 | - Add Mermaid language and support for .mmd files
187 |
188 | ## [v0.0.1]
189 |
190 | - Initial release with flowchart/graph and sequence diagram support
191 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/sequenceDiagram.yaml:
--------------------------------------------------------------------------------
1 | - comment: Sequence Diagram
2 | begin: ^\s*(sequenceDiagram)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: (\%%|#).*
8 | name: comment
9 | - comment: '(title)(title text)'
10 | match: !regex |-
11 | (title)\s*(:)?\s+ # title
12 | (\s*["\(\)$&%\^/#.,?!:*+=<>\'\\\-\w\s]*) # text
13 | captures:
14 | '1':
15 | name: keyword.control.mermaid
16 | '2':
17 | name: keyword.control.mermaid
18 | '3':
19 | name: string
20 | - comment: '(participant)(Actor)(as)?(Label)?'
21 | match: !regex |-
22 | \s*(participant|actor) # participant
23 | \s+((?:(?! as )["\(\)$&%\^/#.?!*=<>\'\\\w\s])+) # Actor
24 | \s*(as)? # as?
25 | \s(["\(\)$&%\^/#.,?!*=<>\'\\\w\s]+)? # Label?
26 | captures:
27 | '1':
28 | name: keyword.control.mermaid
29 | '2':
30 | name: variable
31 | '3':
32 | name: keyword.control.mermaid
33 | '4':
34 | name: string
35 | - comment: '(activate/deactivate)(Actor)'
36 | match: !regex |-
37 | \s*((?:de)?activate) # Activate/Deactivate
38 | \s+(\b["()$&%^/#.?!*=<>'\\\w\s]+\b\)?\s*) # Actor
39 | captures:
40 | '1':
41 | name: keyword.control.mermaid
42 | '2':
43 | name: variable
44 | - comment: '(Note)(direction)(Actor)(,)?(Actor)?(:)(Message)'
45 | match: !regex |-
46 | \s*(Note) # Note
47 | \s+((?:left|right)\sof|over) # Direction
48 | \s+(\b["()$&%^/#.?!*=<>'\\\w\s]+\b\)?\s*) # Actor
49 | (,)? # ,?
50 | (\b["()$&%^/#.?!*=<>'\\\w\s]+\b\)?\s*)? # Actor
51 | (:) # :
52 | (?:\s+([^;#]*))? # Message
53 | captures:
54 | '1':
55 | name: keyword.control.mermaid
56 | '2':
57 | name: entity.name.function.mermaid
58 | '3':
59 | name: variable
60 | '4':
61 | name: keyword.control.mermaid
62 | '5':
63 | name: variable
64 | '6':
65 | name: keyword.control.mermaid
66 | '7':
67 | name: string
68 | - comment: '(loop)(loop text)'
69 | match: !regex |-
70 | \s*(loop) # loop
71 | (?:\s+([^;#]*))? # Loop Text
72 | captures:
73 | '1':
74 | name: keyword.control.mermaid
75 | '2':
76 | name: string
77 | - comment: '(end)'
78 | match: \s*(end)
79 | captures:
80 | '1':
81 | name: keyword.control.mermaid
82 | - comment: '(alt/else/option/par/and/autonumber/critical/opt)(text)'
83 | match: !regex |-
84 | \s*(alt|else|option|par|and|rect|autonumber|critical|opt) # keyword
85 | (?:\s+([^#;]*))?$ # text?
86 | captures:
87 | '1':
88 | name: keyword.control.mermaid
89 | '2':
90 | name: string
91 | - comment: '(Actor)(Arrow)(Actor)(:)(Message)'
92 | match: !regex |-
93 | \s*
94 | (\b["()$&%^/#.?!*=<>'\\\w\s]+\b\)?) # Actor
95 | \s*
96 | (-?-(?:\>|x|\))\>?[+-]?) # Arrow
97 | \s*
98 | (["()$&%^/#.?!*=<>'\\\w\s]+\b\)?) # Actor
99 | \s*
100 | (:) # :
101 | \s*
102 | ([^;#]*) # Message
103 | captures:
104 | '1':
105 | name: variable
106 | '2':
107 | name: keyword.control.mermaid
108 | '3':
109 | name: variable
110 | '4':
111 | name: keyword.control.mermaid
112 | '5':
113 | name: string
114 | - comment: '(box transparent text)'
115 | match: !regex |-
116 | \s*(box) # box
117 | \s+(transparent) # transparent box background
118 | (?:\s+([^;#]*))? # Box Text
119 | captures:
120 | '1':
121 | name: keyword.control.mermaid
122 | '2':
123 | name: entity.name.function.mermaid
124 | '3':
125 | name: string
126 | - comment: '(box text)'
127 | match: !regex |-
128 | \s*(box) # box
129 | (?:\s+([^;#]*))? # Box Text
130 | captures:
131 | '1':
132 | name: keyword.control.mermaid
133 | '2':
134 | name: string
135 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
136 |
--------------------------------------------------------------------------------
/tests/diagrams/gitGraph.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "git graph test"
2 |
3 | gitGraph
4 | %%%%%%%% <--- keyword.control.mermaid
5 | %% comment
6 | %%^^^^^^^^^^ comment
7 | commit
8 | %%^^^^^^ keyword.control.mermaid
9 | commit id:"Normal"
10 | %%^^^^^^ keyword.control.mermaid
11 | %% ^^ keyword.control.mermaid
12 | %% ^ keyword.control.mermaid
13 | %% ^^^^^^^^ string
14 | commit type: NORMAL
15 | %%^^^^^^ keyword.control.mermaid
16 | %% ^^^^ keyword.control.mermaid
17 | %% ^ keyword.control.mermaid
18 | %% ^^^^^^ entity.name.function.mermaid
19 | commit type: HIGHLIGHT
20 | %%^^^^^^ keyword.control.mermaid
21 | %% ^^^^ keyword.control.mermaid
22 | %% ^ keyword.control.mermaid
23 | %% ^^^^^^^^^ entity.name.function.mermaid
24 | commit type: REVERSE
25 | %%^^^^^^ keyword.control.mermaid
26 | %% ^^^^ keyword.control.mermaid
27 | %% ^ keyword.control.mermaid
28 | %% ^^^^^^^ entity.name.function.mermaid
29 | commit id: "Reverse" type: REVERSE
30 | %%^^^^^^ keyword.control.mermaid
31 | %% ^^ keyword.control.mermaid
32 | %% ^ keyword.control.mermaid
33 | %% ^^^^^^^^^ string
34 | %% ^^^^ keyword.control.mermaid
35 | %% ^ keyword.control.mermaid
36 | %% ^^^^^^^ entity.name.function.mermaid
37 | commit id: "feat(api): ..."
38 | %%^^^^^^ keyword.control.mermaid
39 | %% ^^ keyword.control.mermaid
40 | %% ^ keyword.control.mermaid
41 | %% ^^^^^^^^^^^^^^^^ string
42 | commit type: REVERSE id: "Re-order type and id"
43 | %%^^^^^^ keyword.control.mermaid
44 | %% ^^^^ keyword.control.mermaid
45 | %% ^ keyword.control.mermaid
46 | %% ^^^^^^^ entity.name.function.mermaid
47 | %% ^^ keyword.control.mermaid
48 | %% ^ keyword.control.mermaid
49 | %% ^^^^^^^^^^^^^^^^^^^^^^ string
50 | commit tag: "v1.0.0"
51 | %%^^^^^^ keyword.control.mermaid
52 | %% ^^^ keyword.control.mermaid
53 | %% ^ keyword.control.mermaid
54 | %% ^^^^^^^^ string
55 | commit tag: "v1.1.0" type: REVERSE id: "tag and type and id"
56 | %%^^^^^^ keyword.control.mermaid
57 | %% ^^^ keyword.control.mermaid
58 | %% ^ keyword.control.mermaid
59 | %% ^^^^^^^^ string
60 | %% ^^^^ keyword.control.mermaid
61 | %% ^ keyword.control.mermaid
62 | %% ^^^^^^^ entity.name.function.mermaid
63 | %% ^^ keyword.control.mermaid
64 | %% ^ keyword.control.mermaid
65 | %% ^^^^^^^^^^^^^^^^^^^^^^ string
66 | checkout master
67 | %%^^^^^^^^ keyword.control.mermaid
68 | %% ^^^^^^ variable
69 | checkout branch-name
70 | %%^^^^^^^^ keyword.control.mermaid
71 | %% ^^^^^^^^^^^ variable
72 | branch new-branch
73 | %%^^^^^^ keyword.control.mermaid
74 | %% ^^^^^^^^^^ variable
75 | branch branch-3 order: 1
76 | %%^^^^^^ keyword.control.mermaid
77 | %% ^^^^^^^^ variable
78 | %% ^^^^^ keyword.control.mermaid
79 | %% ^ keyword.control.mermaid
80 | %% ^ constant.numeric.decimal.mermaid
81 | merge merge-branch
82 | %%^^^^^ keyword.control.mermaid
83 | %% ^^^^^^^^^^^^ variable
84 | merge merge-branch tag:"MY JUNCTION"
85 | %%^^^^^ keyword.control.mermaid
86 | %% ^^^^^^^^^^^^ variable
87 | %% ^^^ keyword.control.mermaid
88 | %% ^ keyword.control.mermaid
89 | %% ^^^^^^^^^^^^^ string
90 | cherry-pick id:"Normal"
91 | %%^^^^^^^^^^^ keyword.control.mermaid
92 | %% ^^ keyword.control.mermaid
93 | %% ^ keyword.control.mermaid
94 | %% ^^^^^^^^ string
95 |
96 | %% negative cases
97 | invalid_commit
98 | %%^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
99 | invalid_checkout
100 | %%^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
101 | invalid_branch
102 | %%^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
103 | invalid_merge
104 | %%^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
105 | invalid_cherry-pick id:"anId"
106 | %%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
107 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/requirementDiagram.yaml:
--------------------------------------------------------------------------------
1 | - comment: Requirement Diagram
2 | begin: ^\s*(requirementDiagram)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - comment: (requirement) (name) ({)
10 | begin: !regex |-
11 | ^\s*((?:functional|interface|performance|physical)?requirement|designConstraint) # requirement
12 | \s*(["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # name
13 | \s*({) # }
14 | beginCaptures:
15 | '1':
16 | name: keyword.control.mermaid
17 | '2':
18 | name: variable
19 | '3':
20 | name: keyword.control.mermaid
21 | patterns:
22 | - comment: (id:) (variable id)
23 | match: !regex |-
24 | \s*(id:) # id:
25 | \s*([$&%\^/#.,?!;:*+<>_\'\\\w\s]+) # Variable id
26 | captures:
27 | '1':
28 | name: keyword.control.mermaid
29 | '2':
30 | name: variable
31 | - comment: (text:) (text string)
32 | match: !regex |-
33 | \s*(text:) # text:
34 | \s*([$&%\^/#.,?!;:*+<>_\'\\\w\s]+) # Text string
35 | captures:
36 | '1':
37 | name: keyword.control.mermaid
38 | '2':
39 | name: string
40 | - comment: (risk:) (risk option)
41 | match: !regex |-
42 | \s*(risk:) # risk:
43 | \s*(low|medium|high)\s*$ # risk option
44 | captures:
45 | '1':
46 | name: keyword.control.mermaid
47 | '2':
48 | name: entity.name.function.mermaid
49 | - comment: (verifyMethod)(:) (method)
50 | match: !regex |-
51 | \s*(verifymethod:) # verifyMethod:
52 | \s*(analysis|inspection|test|demonstration)\s*$ # risk option
53 | captures:
54 | '1':
55 | name: keyword.control.mermaid
56 | '2':
57 | name: entity.name.function.mermaid
58 | end: !regex |-
59 | \s*(}) # end bracket
60 | endCaptures:
61 | '1':
62 | name: keyword.control.mermaid
63 | - comment: (element) (name) ({)
64 | begin: !regex |-
65 | ^\s*(element) # element
66 | \s*(["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # name
67 | \s*({) # }
68 | beginCaptures:
69 | '1':
70 | name: keyword.control.mermaid
71 | '2':
72 | name: variable
73 | '3':
74 | name: keyword.control.mermaid
75 | patterns:
76 | - comment: (type:) (user type)
77 | match: !regex |-
78 | \s*(type:) # id:
79 | \s*(["$&%\^/#.,?!;:*+<>_\'\\\w\s]+) # user type
80 | captures:
81 | '1':
82 | name: keyword.control.mermaid
83 | '2':
84 | name: variable
85 | - comment: (docref:) (user ref)
86 | match: !regex |-
87 | \s*(docref:) # docref:
88 | \s*([$&%\^/#.,?!;:*+<>_\'\\\w\s]+) # user ref
89 | captures:
90 | '1':
91 | name: keyword.control.mermaid
92 | '2':
93 | name: variable
94 | end: !regex |-
95 | \s*(}) # end bracket
96 | endCaptures:
97 | '1':
98 | name: keyword.control.mermaid
99 | - comment: (source) (-) (type) (->) (destination)
100 | match: !regex |-
101 | ^\s*([\w]+) # source
102 | \s*(-) # -
103 | \s*(contains|copies|derives|satisfies|verifies|refines|traces) # type
104 | \s*(->) # ->
105 | \s*([\w]+)\s*$ # destination
106 | captures:
107 | '1':
108 | name: variable
109 | '2':
110 | name: keyword.control.mermaid
111 | '3':
112 | name: keyword.control.mermaid
113 | '4':
114 | name: keyword.control.mermaid
115 | '5':
116 | name: variable
117 | - comment: (destination) (<-) (type) (-) (source)
118 | match: !regex |-
119 | ^\s*([\w]+) # destination
120 | \s*(<-) # <-
121 | \s*(contains|copies|derives|satisfies|verifies|refines|traces) # type
122 | \s*(-) # -
123 | \s*([\w]+)\s*$ # source
124 | captures:
125 | '1':
126 | name: variable
127 | '2':
128 | name: keyword.control.mermaid
129 | '3':
130 | name: keyword.control.mermaid
131 | '4':
132 | name: keyword.control.mermaid
133 | '5':
134 | name: variable
135 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
136 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/xyChart.yaml:
--------------------------------------------------------------------------------
1 | - comment: XY Chart
2 | begin: ^\s*(xychart(?:-beta)?(?:\s+horizontal)?)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - match: !regex |-
10 | ^\s*(title)\s+ # title
11 | (\s*["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # text
12 | captures:
13 | '1':
14 | name: keyword.control.mermaid
15 | '2':
16 | name: string
17 | - comment: (x-axis)
18 | begin: !regex |-
19 | ^\s*(x-axis) # x-axis
20 | beginCaptures:
21 | '1':
22 | name: keyword.control.mermaid
23 | patterns:
24 | - comment: (decimal) (-->) (decimal)
25 | match: !regex |-
26 | \s*([-+]?\d+\.?\d*) # decimal
27 | \s*(-->) # -->
28 | \s*([-+]?\d+\.?\d*) # decimal
29 | captures:
30 | '1':
31 | name: constant.numeric.decimal.mermaid
32 | '2':
33 | name: keyword.control.mermaid
34 | '3':
35 | name: constant.numeric.decimal.mermaid
36 | - comment: ("text")
37 | match: !regex |-
38 | \s+("[\($&%\^/#.,?!;:*+=<>\'\\\-\w\s]*") # "text"
39 | captures:
40 | '1':
41 | name: string
42 | - comment: (text)
43 | match: !regex |-
44 | \s+([\($&%\^/#.,?!;:*+=<>\'\\\-\w]*) # text
45 | captures:
46 | '1':
47 | name: string
48 | - comment: ([)(text)(,)(text)*(])
49 | begin: \s*(\[) # [
50 | beginCaptures:
51 | '1':
52 | name: keyword.control.mermaid
53 | patterns:
54 | - comment: (decimal)
55 | match: !regex |-
56 | \s*([-+]?\d+\.?\d*) # decimal
57 | captures:
58 | '1':
59 | name: constant.numeric.decimal.mermaid
60 | - comment: ("text")
61 | match: !regex |-
62 | \s*("[\($&%\^/#.,?!;:*+=<>\'\\\-\w\s]*") # "text"
63 | captures:
64 | '1':
65 | name: string
66 | - comment: (text)
67 | match: !regex |-
68 | \s*([\($&%\^/#.?!;:*+=<>\'\\\-\w\s]+) # text
69 | captures:
70 | '1':
71 | name: string
72 | - comment: (,)
73 | match: !regex |-
74 | \s*(,) # ,
75 | captures:
76 | '1':
77 | name: keyword.control.mermaid
78 | end: \s*(\]) # ]
79 | endCaptures:
80 | '1':
81 | name: keyword.control.mermaid
82 | end: '$'
83 | - comment: (y-axis)
84 | begin: !regex |-
85 | ^\s*(y-axis) # y-axis
86 | beginCaptures:
87 | '1':
88 | name: keyword.control.mermaid
89 | patterns:
90 | - comment: (decimal) (-->) (decimal)
91 | match: !regex |-
92 | \s*([-+]?\d+\.?\d*) # decimal
93 | \s*(-->) # -->
94 | \s*([-+]?\d+\.?\d*) # decimal
95 | captures:
96 | '1':
97 | name: constant.numeric.decimal.mermaid
98 | '2':
99 | name: keyword.control.mermaid
100 | '3':
101 | name: constant.numeric.decimal.mermaid
102 | - comment: ("text")
103 | match: !regex |-
104 | \s+("[\($&%\^/#.,?!;:*+=<>\'\\\-\w\s]*") # "text"
105 | captures:
106 | '1':
107 | name: string
108 | - comment: (text)
109 | match: !regex |-
110 | \s+([\($&%\^/#.,?!;:*+=<>\'\\\-\w]*) # text
111 | captures:
112 | '1':
113 | name: string
114 | end: '$'
115 | - comment: (line|bar) ([)(decimal)+(])
116 | begin: !regex |-
117 | ^\s*(line|bar) # line|bar
118 | \s*(\[) # [
119 | beginCaptures:
120 | '1':
121 | name: keyword.control.mermaid
122 | '2':
123 | name: keyword.control.mermaid
124 | patterns:
125 | - comment: (decimal)
126 | match: !regex |-
127 | \s*([-+]?\d+\.?\d*) # decimal
128 | captures:
129 | '1':
130 | name: constant.numeric.decimal.mermaid
131 | - comment: (,)
132 | match: !regex |-
133 | \s*(,) # ,
134 | captures:
135 | '1':
136 | name: keyword.control.mermaid
137 | end: \s*(\]) # ]
138 | endCaptures:
139 | '1':
140 | name: keyword.control.mermaid
141 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
142 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/stateDiagram.yaml:
--------------------------------------------------------------------------------
1 | - comment: State Diagram
2 | begin: ^\s*(stateDiagram(?:-v2)?)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - match: ^(?i)\s*(direction)\s+(BT|RL|TB|LR)
10 | captures:
11 | '1':
12 | name: keyword.control.mermaid
13 | '2':
14 | name: entity.name.function.mermaid
15 | - comment: '}'
16 | match: \s+(})\s+
17 | captures:
18 | '1':
19 | name: keyword.control.mermaid
20 | - comment: '--'
21 | match: \s+(--)\s+
22 | captures:
23 | '1':
24 | name: keyword.control.mermaid
25 | - comment: '(state)'
26 | match: ^\s*([\w-]+)$
27 | name: variable
28 | - comment: '(state) : (description)'
29 | match: !regex |-
30 | ([\w-]+) # state name
31 | \s*(:) # :
32 | \s*(\s*[^:]+) # description
33 | captures:
34 | '1':
35 | name: variable
36 | '2':
37 | name: keyword.control.mermaid
38 | '3':
39 | name: string
40 | - comment: 'state'
41 | begin: !regex |-
42 | ^\s*(state)\s+ # state
43 | beginCaptures:
44 | '1':
45 | name: keyword.control.mermaid
46 | patterns:
47 | - comment: '"(description)" as (state) ({)'
48 | match: !regex |-
49 | \s*("[^"]+") # description
50 | \s*(as) # as
51 | \s+([\w-]+) # state name
52 | \s*({)? # {
53 | captures:
54 | '1':
55 | name: string
56 | '2':
57 | name: keyword.control.mermaid
58 | '3':
59 | name: variable
60 | '4':
61 | name: keyword.control.mermaid
62 | - comment: '(state name) ({)'
63 | match: !regex |-
64 | \s*([\w-]+) # state name
65 | \s+({) # {
66 | captures:
67 | '1':
68 | name: variable
69 | '2':
70 | name: keyword.control.mermaid
71 | - comment: '(state name) <>'
72 | match: !regex |-
73 | \s*([\w-]+) # state name
74 | \s+(<<(?:fork|join)>>) # <>
75 | captures:
76 | '1':
77 | name: variable
78 | '2':
79 | name: keyword.control.mermaid
80 | end: '$'
81 | - comment: '(state) -->'
82 | begin: !regex |-
83 | ([\w-]+) # state name
84 | \s*(-->) # -->
85 | beginCaptures:
86 | '1':
87 | name: variable
88 | '2':
89 | name: keyword.control.mermaid
90 | patterns:
91 | - comment: '(state) (:)? (transition text)?'
92 | match: !regex |-
93 | \s*([\w-]+) # state name
94 | \s*(:)? # :
95 | \s*([^\n:]+)? # transition text
96 | captures:
97 | '1':
98 | name: variable
99 | '2':
100 | name: keyword.control.mermaid
101 | '3':
102 | name: string
103 | - comment: '[*] (:)? (transition text)?'
104 | match: !regex |-
105 | (\[\*\]) # [*]
106 | \s*(:)? # :
107 | \s*([^\n:]+)? # transition text
108 | captures:
109 | '1':
110 | name: keyword.control.mermaid
111 | '2':
112 | name: keyword.control.mermaid
113 | '3':
114 | name: string
115 | end: $
116 | - comment: '[*] --> (state) (:)? (transition text)?'
117 | match: !regex |-
118 | (\[\*\]) # [*]
119 | \s*(-->) # -->
120 | \s*([\w-]+) # state name
121 | \s*(:)? # :
122 | \s*([^\n:]+)? # transition text
123 | captures:
124 | '1':
125 | name: keyword.control.mermaid
126 | '2':
127 | name: keyword.control.mermaid
128 | '3':
129 | name: variable
130 | '4':
131 | name: keyword.control.mermaid
132 | '5':
133 | name: string
134 | - comment: 'note left|right of (state name)'
135 | match: !regex |-
136 | ^\s*(note (?:left|right) of) # note left|right of
137 | \s+([\w-]+) # state name
138 | \s*(:) # :
139 | \s*([^\n:]+) # note text
140 | captures:
141 | '1':
142 | name: keyword.control.mermaid
143 | '2':
144 | name: variable
145 | '3':
146 | name: keyword.control.mermaid
147 | '4':
148 | name: string
149 | - comment: 'note left|right of (state name) (note text) end note'
150 | begin: !regex |-
151 | ^\s*(note (?:left|right) of) # note left|right of
152 | \s+([\w-]+)(.|\n) # state name
153 | beginCaptures:
154 | '1':
155 | name: keyword.control.mermaid
156 | '2':
157 | name: variable
158 | contentName: string
159 | end: !regex |-
160 | (end note)
161 | endCaptures:
162 | '1':
163 | name: keyword.control.mermaid
164 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
165 |
--------------------------------------------------------------------------------
/tests/diagrams/architecture.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "architecture diagram test"
2 |
3 | architecture-beta
4 | %% <------------ keyword.control.mermaid
5 | %% Group
6 | group public_api(cloud)[Public API]
7 | %%^^^^^keyword.control.mermaid
8 | %% ^^^^^^^^^^variable
9 | %% ^punctuation.definition.typeparameters.begin.mermaid
10 | %% ^^^^^string
11 | %% ^punctuation.definition.typeparameters.end.mermaid
12 | %% ^punctuation.definition.typeparameters.begin.mermaid
13 | %% ^^^^^^^^^^string
14 | %% ^punctuation.definition.typeparameters.end.mermaid
15 |
16 | %% Group without icon and title
17 | group private_api
18 | %%^^^^^keyword.control.mermaid
19 | %% ^^^^^^^^^^^variable
20 |
21 | %% Group in Other Group
22 | group private_api(cloud)[Private API] in public_api
23 | %%^^^^^keyword.control.mermaid
24 | %% ^^^^^^^^^^^variable
25 | %% ^punctuation.definition.typeparameters.begin.mermaid
26 | %% ^^^^^string
27 | %% ^punctuation.definition.typeparameters.end.mermaid
28 | %% ^punctuation.definition.typeparameters.begin.mermaid
29 | %% ^^^^^^^^^^^string
30 | %% ^punctuation.definition.typeparameters.end.mermaid
31 | %% ^^keyword.control.mermaid
32 | %% ^^^^^^^^^^variable
33 |
34 | %% Group with Logos
35 | group api(logos:aws-lambda)[API]
36 | %%^^^^^keyword.control.mermaid
37 | %% ^^^variable
38 | %% ^punctuation.definition.typeparameters.begin.mermaid
39 | %% ^^^^^string
40 | %% ^keyword.control.mermaid
41 | %% ^^^^^^^^^^string
42 | %% ^punctuation.definition.typeparameters.end.mermaid
43 | %% ^punctuation.definition.typeparameters.begin.mermaid
44 | %% ^^^string
45 | %% ^punctuation.definition.typeparameters.end.mermaid
46 |
47 | %% Service
48 | service disk(disk)[Storage]
49 | %%^^^^^^^keyword.control.mermaid
50 | %% ^^^^variable
51 | %% ^punctuation.definition.typeparameters.begin.mermaid
52 | %% ^^^^string
53 | %% ^punctuation.definition.typeparameters.end.mermaid
54 | %% ^punctuation.definition.typeparameters.begin.mermaid
55 | %% ^^^^^^^string
56 | %% ^punctuation.definition.typeparameters.end.mermaid
57 |
58 | %% Service without icon and title
59 | service server
60 | %%^^^^^^^keyword.control.mermaid
61 | %% ^^^^^^variable
62 |
63 | %% Service with Logos
64 | service server(logos:aws-ec2)[EC2 Instance]
65 | %%^^^^^^^keyword.control.mermaid
66 | %% ^^^^^^variable
67 | %% ^punctuation.definition.typeparameters.begin.mermaid
68 | %% ^^^^^string
69 | %% ^keyword.control.mermaid
70 | %% ^^^^^^^string
71 | %% ^punctuation.definition.typeparameters.end.mermaid
72 | %% ^punctuation.definition.typeparameters.begin.mermaid
73 | %% ^^^^^^^^^^^^string
74 | %% ^punctuation.definition.typeparameters.end.mermaid
75 |
76 | %% Service in Group
77 | service database(db)[Database] in private_api
78 | %%^^^^^^^keyword.control.mermaid
79 | %% ^^^^^^^^variable
80 | %% ^punctuation.definition.typeparameters.begin.mermaid
81 | %% ^^string
82 | %% ^punctuation.definition.typeparameters.end.mermaid
83 | %% ^punctuation.definition.typeparameters.begin.mermaid
84 | %% ^^^^^^^^string
85 | %% ^punctuation.definition.typeparameters.end.mermaid
86 | %% ^^keyword.control.mermaid
87 | %% ^^^^^^^^^^^variable
88 |
89 | %% Simple Edge
90 | db:L -- R:server
91 | %%^^variable
92 | %% ^keyword.control.mermaid
93 | %% ^entity.name.function.mermaid
94 | %% ^^keyword.control.mermaid
95 | %% ^entity.name.function.mermaid
96 | %% ^keyword.control.mermaid
97 | %% ^^^^^^variable
98 |
99 | %% Edge with Arrows
100 | private_api:L <--> R:public_api
101 | %%^^^^^^^^^^^variable
102 | %% ^keyword.control.mermaid
103 | %% ^entity.name.function.mermaid
104 | %% ^^^^keyword.control.mermaid
105 | %% ^entity.name.function.mermaid
106 | %% ^keyword.control.mermaid
107 | %% ^^^^^^^^^^variable
108 |
109 | %% Edge out of Group
110 | server{group}:B --> T:subnet{group}
111 | %%^^^^^^variable
112 | %% ^punctuation.definition.typeparameters.begin.mermaid
113 | %% ^^^^^variable
114 | %% ^punctuation.definition.typeparameters.end.mermaid
115 | %% ^keyword.control.mermaid
116 | %% ^entity.name.function.mermaid
117 | %% ^^^keyword.control.mermaid
118 | %% ^entity.name.function.mermaid
119 | %% ^keyword.control.mermaid
120 | %% ^^^^^^variable
121 | %% ^punctuation.definition.typeparameters.begin.mermaid
122 | %% ^^^^^variable
123 | %% ^punctuation.definition.typeparameters.end.mermaid
124 |
125 | %% Junction
126 | junction junctionCenter
127 | %%^^^^^^^^keyword.control.mermaid
128 | %% ^^^^^^^^^^^^^^variable
129 |
130 | %% Junction in Group
131 | junction junctionRight in public_api
132 | %%^^^^^^^^keyword.control.mermaid
133 | %% ^^^^^^^^^^^^^variable
134 | %% ^^keyword.control.mermaid
135 | %% ^^^^^^^^^^variable
136 |
--------------------------------------------------------------------------------
/tests/diagrams/gantt.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "gantt chart test"
2 |
3 | gantt
4 | %% <-------------- keyword.control.mermaid
5 | dateFormat YYYY-MM-DD
6 | %%^^^^^^^^^^ keyword.control.mermaid
7 | %% ^^^^^^^^^^ entity.name.function.mermaid
8 | dateFormat DD.MM.YYYY
9 | %%^^^^^^^^^^ keyword.control.mermaid
10 | %% ^^^^^^^^^^ entity.name.function.mermaid
11 | axisFormat %m/%d/%Y
12 | %%^^^^^^^^^^ keyword.control.mermaid
13 | %% ^^^^^^^^ entity.name.function.mermaid
14 | axisFormat %d..text//%m\\test--%y
15 | %%^^^^^^^^^^ keyword.control.mermaid
16 | %% ^^^^^^^^^^^^^^^^^^^^^^ entity.name.function.mermaid
17 | title Adding GANTT diagram functionality to mermaid
18 | %%^^^^^ keyword.control.mermaid
19 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
20 | excludes 2023-02-28
21 | %%^^^^^^^^ keyword.control.mermaid
22 | %% ^^^^^^^^^^ string
23 | excludes weekends
24 | %%^^^^^^^^ keyword.control.mermaid
25 | %% ^^^^^^^^ string
26 | excludes 2023-02-28, sunday, 2023-01-01, weekends
27 | %%^^^^^^^^ keyword.control.mermaid
28 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
29 | todayMarker off
30 | %%^^^^^^^^^^^ keyword.control.mermaid
31 | %% ^^^ string
32 | todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5
33 | %%^^^^^^^^^^^ keyword.control.mermaid
34 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
35 | tickInterval 1day
36 | %%^^^^^^^^^^^^ keyword.control.mermaid
37 | %% ^^^^ string
38 | tickInterval 600millisecond
39 | %%^^^^^^^^^^^^ keyword.control.mermaid
40 | %% ^^^^^^^^^^^^^^ string
41 | section A section %%comment
42 | %%^^^^^^^ keyword.control.mermaid
43 | %% ^^^^^^^^^^^^^^^^^^^ string
44 | Completed task :done, des1, 2014-01-06,2014-01-08
45 | %%^^^^^^^^^^^^^^ string
46 | %% ^ keyword.control.mermaid
47 | %% ^^^^ entity.name.function.mermaid
48 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.mermaid
49 | Active task :active, des2, 2014-01-09, 3d
50 | %%^^^^^^^^^^^ string
51 | %% ^ keyword.control.mermaid
52 | %% ^^^^^^ entity.name.function.mermaid
53 | %% ^^^^^^^^^^^^^^^^^^^^ source.mermaid
54 | Future task : des3, after des2, 5d %%comment
55 | %%^^^^^^^^^^^ string
56 | %% ^ keyword.control.mermaid
57 | %% ^^^^^ source.mermaid
58 | %% ^^^^^ entity.name.function.mermaid
59 | %% ^^^^^^^^ source.mermaid
60 | Future task2 : des4, after des3, 5d
61 | %%^^^^^^^^^^^^ string
62 | %% ^ keyword.control.mermaid
63 | %% ^^^^ source.mermaid
64 | %% ^^^^^ entity.name.function.mermaid
65 | %% ^^^^^^^^ source.mermaid
66 | A task :a1, 2014-01-01, 30d
67 | %%^^^^^^ string
68 | %% ^ keyword.control.mermaid
69 | %% ^^^^^^^^^^^^^^^^^^^ source.mermaid
70 | section Critical tasks
71 | %%^^^^^^^ keyword.control.mermaid
72 | %% ^^^^^^^^^^^^^^ string
73 | Completed task in the critical line :crit, done, 2014-01-06,24h
74 | %%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
75 | %% ^ keyword.control.mermaid
76 | %% ^^^^ entity.name.function.mermaid
77 | %% ^ source.mermaid
78 | %% ^^^^ entity.name.function.mermaid
79 | %% ^^^^^^^^^^^^^^^^ source.mermaid
80 | Implement parser and jison :crit, done, after des1, 2d
81 | %%^^^^^^^^^^^^^^^^^^^^^^^^^^ string
82 | %% ^ keyword.control.mermaid
83 | %% ^^^^ entity.name.function.mermaid
84 | %% ^ source.mermaid
85 | %% ^^^^ entity.name.function.mermaid
86 | %% ^ source.mermaid
87 | %% ^^^^^ entity.name.function.mermaid
88 | %% ^^^^^^^^ source.mermaid
89 | Create tests for parser :crit, active, 3d
90 | %%^^^^^^^^^^^^^^^^^^^^^^^ string
91 | %% ^ keyword.control.mermaid
92 | %% ^^^^ entity.name.function.mermaid
93 | %% ^ source.mermaid
94 | %% ^^^^^^ entity.name.function.mermaid
95 | %% ^^^^ source.mermaid
96 | Future task in critical line :crit, 5d
97 | %%^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
98 | %% ^ keyword.control.mermaid
99 | %% ^^^^ entity.name.function.mermaid
100 | %% ^^^^ source.mermaid
101 | Create tests for renderer :2d
102 | %%^^^^^^^^^^^^^^^^^^^^^^^^^ string
103 | %% ^ keyword.control.mermaid
104 | %% ^^ source.mermaid
105 | Add to mermaid :1d
106 | %%^^^^^^^^^^^^^^ string
107 | %% ^ keyword.control.mermaid
108 | %% ^^ source.mermaid
109 |
110 | %% negative cases
111 | invalid_title
112 | %%^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
113 | invalid_excludes monday
114 | %%^^^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
115 | invalid_section
116 | %%^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
117 | invalid_axisFormat 44
118 | %%^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
119 | invalid_dateFormat DD.MM.YYYY
120 | %%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
--------------------------------------------------------------------------------
/tests/diagrams/state.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "state diagram test"
2 |
3 | stateDiagram
4 | %% <------------ keyword.control.mermaid
5 | s1
6 | %%^^ variable
7 | direction LR
8 | %%^^^^^^^^^ keyword.control.mermaid
9 | %% ^^ entity.name.function.mermaid
10 | state "Description with parenthesis" as s2
11 | %%^^^^^ keyword.control.mermaid
12 | state "Desc
" as s2 {
13 | %%^^^^^ keyword.control.mermaid
14 | %% ^^^^^^^^^^ string
15 | %% ^^ keyword.control.mermaid
16 | %% ^^ variable
17 | %% ^ keyword.control.mermaid
18 | state "no space"as s2{
19 | %%^^^^^ keyword.control.mermaid
20 | %% ^^^^^^^^^^ string
21 | %% ^^ keyword.control.mermaid
22 | %% ^^ variable
23 | %% ^ keyword.control.mermaid
24 | s3 : Description with colon
25 | %%^^ variable
26 | %% ^ keyword.control.mermaid
27 | %% ^^^^^^^^^^^^^^^^^^^^^^ string
28 | s4 : symbols in description
./"
29 | %%^^ variable
30 | %% ^ keyword.control.mermaid
31 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
32 | s5:desc without spaces
33 | %%^^ variable
34 | %% ^ keyword.control.mermaid
35 | %% ^^^^^^^^^^^^^^^^^^^ string
36 | s1 --> s2
37 | %%^^ variable
38 | %% ^^^ keyword.control.mermaid
39 | %% ^^ variable
40 | s1-->s2
41 | %%^^ variable
42 | %% ^^^ keyword.control.mermaid
43 | %% ^^ variable
44 | s2 --> s3: Colon transition
45 | %%^^ variable
46 | %% ^^^ keyword.control.mermaid
47 | %% ^^ variable
48 | %% ^^^^^^^^^^^^^^^^ string
49 | [*] --> s1 : Transition text
50 | %%^^^ keyword.control.mermaid
51 | %% ^^^ keyword.control.mermaid
52 | %% ^^ variable
53 | %% ^ keyword.control.mermaid
54 | %% ^^^^^^^^^^^^^^^ string
55 | [*]-->s2
56 | %%^^^^^^ keyword.control.mermaid
57 | %% ^^ variable
58 | s3 --> [*]
59 | %%^^ variable
60 | %% ^^^ keyword.control.mermaid
61 | %% ^^^ keyword.control.mermaid
62 |
63 | state NestedComposite {
64 | %%^^^^^ keyword.control.mermaid
65 | %% ^^^^^^^^^^^^^^^ variable
66 | %% ^ keyword.control.mermaid
67 | [*] --> Nested
68 | %% ^^^ keyword.control.mermaid
69 | %% ^^^ keyword.control.mermaid
70 | %% ^^^^^^ variable
71 |
72 | state Nested {
73 | %% ^^^^^ keyword.control.mermaid
74 | %% ^^^^^^ variable
75 | %% ^ keyword.control.mermaid
76 | [*] --> second
77 | %% ^^^ keyword.control.mermaid
78 | %% ^^^ keyword.control.mermaid
79 | %% ^^^^^^ variable
80 | }
81 | %% ^ keyword.control.mermaid
82 | }
83 | %%^ keyword.control.mermaid
84 |
85 | state fork_state <>
86 | %%^^^^^ keyword.control.mermaid
87 | %% ^^^^^^^^^^ variable
88 | %% ^^^^^^^^ keyword.control.mermaid
89 | [*] --> fork_state
90 | %% ^^^ keyword.control.mermaid
91 | %% ^^^ keyword.control.mermaid
92 | %% ^^^^^^^^^^ variable
93 | fork_state --> State2
94 | %% ^^^^^^^^^^ variable
95 | %% ^^^ keyword.control.mermaid
96 | %% ^^^^^^ variable
97 |
98 | state join_state <>
99 | %% ^^^^^ keyword.control.mermaid
100 | %% ^^^^^^^^^^ variable
101 | %% ^^^^^^^ keyword.control.mermaid
102 | State2 --> join_state
103 | %% ^^^^^^ variable
104 | %% ^^^ keyword.control.mermaid
105 | %% ^^^^^^^^^^ variable
106 |
107 | note right of State1
108 | %%^^^^^^^^^^^^^ keyword.control.mermaid
109 | Important information! You can write
110 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
111 | notes.
112 | %% ^^^^^^ string
113 | end note
114 | %%^^^^^^^^ keyword.control.mermaid
115 | note left of State2 : This is the note to the left./nMore text
116 | %%^^^^^^^^^^^^ keyword.control.mermaid
117 | %% ^^^^^^ variable
118 | %% ^ keyword.control.mermaid
119 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
120 | note right of State2: no space before semicolon
121 | %%^^^^^^^^^^^^^ keyword.control.mermaid
122 | %% ^^^^^^ variable
123 | %% ^ keyword.control.mermaid
124 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^ string
125 | note left of State2: semicolon invalid:
126 | %% ^ source.mermaid
127 | %% concurrency
128 | state Active {
129 | %%^^^^^ keyword.control.mermaid
130 | %% ^^^^^^ variable
131 | %% ^ keyword.control.mermaid
132 | [*] --> NumLockOff
133 | %% ^^^ keyword.control.mermaid
134 | %% ^^^ keyword.control.mermaid
135 | %% ^^^^^^^^^^ variable
136 | NumLockOff --> NumLockOn : EvNumLockPressed
137 | %% ^^^^^^^^^^ variable
138 | %% ^^^ keyword.control.mermaid
139 | %% ^^^^^^^^^ variable
140 | %% ^ keyword.control.mermaid
141 | %% ^^^^^^^^^^^^^^^^ string
142 | NumLockOn --> NumLockOff : EvNumLockPressed
143 | %% ^^^^^^^^^ variable
144 | %% ^^^ keyword.control.mermaid
145 | %% ^^^^^^^^^^ variable
146 | %% ^ keyword.control.mermaid
147 | %% ^^^^^^^^^^^^^^^^ string
148 | --
149 | %% ^^ keyword.control.mermaid
150 | [*] --> CapsLockOff
151 | %% ^^^ keyword.control.mermaid
152 | %% ^^^ keyword.control.mermaid
153 | %% ^^^^^^^^^^^ variable
154 | CapsLockOff --> CapsLockOn : EvCapsLockPressed/moreText
155 | %% ^^^^^^^^^^^ variable
156 | %% ^^^ keyword.control.mermaid
157 | %% ^^^^^^^^^^ variable
158 | %% ^ keyword.control.mermaid
159 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^ string
160 | CapsLockOn --> CapsLockOff : EvCapsLockPressed
161 | %% ^^^^^^^^^^ variable
162 | %% ^^^ keyword.control.mermaid
163 | %% ^^^^^^^^^^^ variable
164 | %% ^ keyword.control.mermaid
165 | %% ^^^^^^^^^^^^^^^^^ string
166 | }
167 | %%^ keyword.control.mermaid
168 |
169 | %% negative cases
170 | invalid note left of blah
171 | %%^^^^^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
172 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/graph.yaml:
--------------------------------------------------------------------------------
1 | - comment: Graph
2 | begin: ^\s*(graph|flowchart)\s+([\p{Letter}\ 0-9]+)?
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | '2':
7 | name: entity.name.function.mermaid
8 | patterns:
9 | - match: \%%.*
10 | name: comment
11 | - comment: ''
12 | match: !regex |-
13 | ^\s*(subgraph)\s+
14 | (\w+)
15 | (\[)
16 | ("?[\w\s*+%=\\/:\.\-'`,&^#$!?<>]*"?)
17 | (\])
18 | captures:
19 | '1':
20 | name: keyword.control.mermaid
21 | '2':
22 | name: variable
23 | '3':
24 | name: keyword.control.mermaid
25 | '4':
26 | name: string
27 | '5':
28 | name: keyword.control.mermaid
29 | - match: ^\s*(subgraph)\s+([\p{Letter}\ 0-9<>]+)
30 | captures:
31 | '1':
32 | name: keyword.control.mermaid
33 | '2':
34 | name: entity.name.function.mermaid
35 | - match: ^(?i)\s*(direction)\s+(RB|BT|RL|TD|LR)
36 | captures:
37 | '1':
38 | name: keyword.control.mermaid
39 | '2':
40 | name: entity.name.function.mermaid
41 | - match: \b(end)\b
42 | name: keyword.control.mermaid
43 | - comment: '(Entity)(Edge/Shape)(Text)(Edge/Shape)'
44 | begin: !regex |-
45 | (\b(?:(?!--|==)[-\w])+\b\s*) # Entity
46 | (\(\[|\[\[|\[\(|\[|\(+|\>|\{|\(\() # Edge/Shape
47 | beginCaptures:
48 | '1':
49 | name: variable
50 | '2':
51 | name: keyword.control.mermaid
52 | '3':
53 | name: string
54 | patterns:
55 | - comment: ("multi-line text")
56 | begin: '\s*(")'
57 | beginCaptures:
58 | '1':
59 | name: string
60 | patterns:
61 | - comment: capture inner text between quotes
62 | begin: !regex |-
63 | ([^"]*)
64 | beginCaptures:
65 | '1':
66 | name: string
67 | patterns:
68 | # This capture is needed to make the begin capture function
69 | - match: '([^"]*)'
70 | captures:
71 | '1':
72 | name: comment
73 | end: '(?=")'
74 | end: '(")'
75 | endCaptures:
76 | '1':
77 | name: string
78 | - comment: (single line text)
79 | match: !regex |-
80 | \s*([$&%\^/#.,?!;:*+<>_\'\\\w\s]+) # Text
81 | captures:
82 | '1':
83 | name: string
84 | end: !regex |-
85 | (\]\)|\]\]|\)\]|\]|\)+|\}|\)\)) # Edge/Shape
86 | endCaptures:
87 | '1':
88 | name: keyword.control.mermaid
89 | - comment: (Graph Link)("Multiline text")(Graph Link)
90 | begin: !regex |-
91 | \s*((?:-?\.{1,4}-|-{2,5}|={2,5})[xo>]?\|) # Start arrow
92 | beginCaptures:
93 | '1':
94 | name: keyword.control.mermaid
95 | patterns:
96 | - comment: ("multi-line text")
97 | begin: '\s*(")'
98 | beginCaptures:
99 | '1':
100 | name: string
101 | patterns:
102 | - comment: capture inner text between quotes
103 | begin: !regex |-
104 | ([^"]*)
105 | beginCaptures:
106 | '1':
107 | name: string
108 | patterns:
109 | # This capture is needed to make the begin capture function
110 | - match: '([^"]*)'
111 | captures:
112 | '1':
113 | name: comment
114 | end: '(?=")'
115 | end: '(")'
116 | endCaptures:
117 | '1':
118 | name: string
119 | - comment: (single line text)
120 | match: !regex |-
121 | \s*([$&%\^/#.,?!;:*+<>_\'\\\w\s]+) # Text
122 | captures:
123 | '1':
124 | name: string
125 | end: !regex |-
126 | (\|) # End bracket
127 | endCaptures:
128 | '1':
129 | name: keyword.control.mermaid
130 | - comment: (Graph Link Start Arrow)(Text)(Graph Link End Arrow)
131 | match: !regex |-
132 | \s*([xo<]?(?:-{2,5}|={2,5}|-\.{1,3}|-\.)) # Start Arrow
133 | ((?:(?!--|==)[\w\s*+%=\\/:\.\-'`,"&^#$!?<>\[\]])*) # Text
134 | ((?:-{2,5}|={2,5}|\.{1,3}-|\.-)[xo>]?) # End Arrow
135 | captures:
136 | '1':
137 | name: keyword.control.mermaid
138 | '2':
139 | name: string
140 | '3':
141 | name: keyword.control.mermaid
142 | - comment: (Graph Link)
143 | match: !regex |-
144 | \s*([ox<]?(?:-?\.{1,4}-|-{1,4}|={1,4})[ox>]?) # Graph Link
145 | captures:
146 | '1':
147 | name: keyword.control.mermaid
148 | - comment: Entity
149 | match: (\b(?:(?!--|==)[-\w])+\b\s*)
150 | name: variable
151 | - comment: '(Class)(Node(s))(ClassName)'
152 | match: !regex |-
153 | \s*(class) # class
154 | \s+(\b[-,\w]+) # Node(s)
155 | \s+(\b\w+\b) # ClassName
156 | captures:
157 | '1':
158 | name: keyword.control.mermaid
159 | '2':
160 | name: variable
161 | '3':
162 | name: string
163 | - comment: '(ClassDef)(ClassName)(Styles)'
164 | match: !regex |-
165 | \s*(classDef) # classDef
166 | \s+(\b\w+\b) # ClassName
167 | \s+(\b[-,:;#\w]+) # Styles
168 | captures:
169 | '1':
170 | name: keyword.control.mermaid
171 | '2':
172 | name: variable
173 | '3':
174 | name: string
175 | - comment: '(Click)(Entity)(Link)?(Tooltip)'
176 | match: !regex |-
177 | \s*(click) # Click
178 | \s+(\b[-\w]+\b\s*) # Entity
179 | (\b\w+\b)? # Link/callback?
180 | \s("*.*") # Tooltip
181 | captures:
182 | '1':
183 | name: keyword.control.mermaid
184 | '2':
185 | name: variable
186 | '3':
187 | name: variable
188 | '4':
189 | name: string
190 | - comment: ExtendedNodeShapes
191 | begin: \s*(\@\{)
192 | beginCaptures:
193 | '1':
194 | name: keyword.control.mermaid
195 | patterns:
196 | - comment: (shape)(shape name)(comma)?
197 | match: !regex |-
198 | \s*(shape\s*\:)([^\,\}]*)(\,)?
199 | captures:
200 | '1':
201 | name: keyword.control.mermaid
202 | '2':
203 | name: entity.name.function.mermaid
204 | '3':
205 | name: keyword.control.mermaid
206 | - comment: (label)(label text)(comma)?
207 | match: !regex |-
208 | \s*(label\s*\:)([^\,\}]*)(\,)?
209 | captures:
210 | '1':
211 | name: keyword.control.mermaid
212 | '2':
213 | name: string
214 | '3':
215 | name: keyword.control.mermaid
216 | end: (\})
217 | endCaptures:
218 | '1':
219 | name: keyword.control.mermaid
220 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
221 |
--------------------------------------------------------------------------------
/tests/diagrams/sequence.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "sequence diagram test"
2 |
3 | sequenceDiagram
4 | %% <-------------- keyword.control.mermaid
5 | autonumber
6 | %%^^^^^^^^^^ keyword.control.mermaid
7 | %% participant
8 | participant Alice
9 | %%^^^^^^^^^^^ keyword.control.mermaid
10 | %% ^^^^^ variable
11 | participant B NewasLine as Bob
Newline
12 | %%^^^^^^^^^^^ keyword.control.mermaid
13 | %% ^^^^^^^^^^^ variable
14 | %% ^^ keyword.control.mermaid
15 | %% ^^^^^^^^^^^^^^ string
16 | participant C as Carol
17 | %%^^^^^^^^^^^ keyword.control.mermaid
18 | %% ^ variable
19 | %% ^^ keyword.control.mermaid
20 | %% ^^^^^ string
21 | actor D as AlternativeActor
22 | %%^^^^^ keyword.control.mermaid
23 | %% ^ variable
24 | %% ^^ keyword.control.mermaid
25 | %% ^^^^^^^^^^^^^^^^ string
26 | title Test Diagram
27 | %%^^^^^ keyword.control.mermaid
28 | %% ^^^^^^^^^^^^ string
29 | title: Alternate title style
30 | %%^^^^^^ keyword.control.mermaid
31 | %% ^^^^^^^^^^^^^^^^^^^^^ string
32 | %% arrows
33 | B->C: Solid line without arrow
34 | %%^ variable
35 | %% ^^ keyword.control.mermaid
36 | %% ^ variable
37 | %% ^ keyword.control.mermaid
38 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ string
39 | B-->C: Dotted line without arrow
40 | %%^ variable
41 | %% ^^^ keyword.control.mermaid
42 | %% ^ variable
43 | %% ^ keyword.control.mermaid
44 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^ string
45 | B->>C:Solid line with arrowhead
46 | %%^ variable
47 | %% ^^^ keyword.control.mermaid
48 | %% ^ variable
49 | %% ^ keyword.control.mermaid
50 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^ string
51 | B-->>C: Dotted line with arrowhead
52 | %%^ variable
53 | %% ^^^^ keyword.control.mermaid
54 | %% ^ variable
55 | %% ^ keyword.control.mermaid
56 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^ string
57 | B-)C: Solid line with Async arrow
58 | %%^ variable
59 | %% ^^ keyword.control.mermaid
60 | %% ^ variable
61 | %% ^ keyword.control.mermaid
62 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
63 | B--)C: Dotted line with Async arrow
64 | %%^ variable
65 | %% ^^^ keyword.control.mermaid
66 | %% ^ variable
67 | %% ^ keyword.control.mermaid
68 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
69 | B-xC: Solid line with a cross at end
70 | %%^ variable
71 | %% ^^ keyword.control.mermaid
72 | %% ^ variable
73 | %% ^ keyword.control.mermaid
74 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
75 | B--xC: Dotted line with a cross at end
76 | %%^ variable
77 | %% ^^^ keyword.control.mermaid
78 | %% ^ variable
79 | %% ^ keyword.control.mermaid
80 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
81 | %% activation, shorthand
82 | activate Alice
83 | %%^^^^^^^^ keyword.control.mermaid
84 | %% ^^^^^ variable
85 | B->>+C: Arrow with + that activates Carol
86 | %%^ variable
87 | %% ^^^^ keyword.control.mermaid
88 | %% ^ variable
89 | %% ^ keyword.control.mermaid
90 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
91 | C->>-B: Arrow with - that deactivates Carol
92 | %%^ variable
93 | %% ^^^^ keyword.control.mermaid
94 | %% ^ variable
95 | %% ^ keyword.control.mermaid
96 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
97 | Participant1 (with brackets) -->Backend (with brackets) : wrong on this line
98 | %%^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable
99 | %% ^^^ keyword.control.mermaid
100 | %% ^^^^^^^^^^^^^^^^^^^^^^^ variable
101 | %% ^ keyword.control.mermaid
102 | %% ^^^^^^^^^^^^^^^^^^ string
103 | deactivate Alice
104 | %%^^^^^^^^^^ keyword.control.mermaid
105 | %% ^^^^^ variable
106 | %% notes
107 | Note left of Alice: Alice likes to chat
108 | %%^^^^ keyword.control.mermaid
109 | %% ^^^^^^^ entity.name.function.mermaid
110 | %% ^^^^^ variable
111 | %% ^ keyword.control.mermaid
112 | %% ^^^^^^^^^^^^^^^^^^^ string
113 | Note left of Alice (brackets): Alice likes to chat
114 | %%^^^^ keyword.control.mermaid
115 | %% ^^^^^^^ entity.name.function.mermaid
116 | %% ^^^^^^^^^^^^^^^^ variable
117 | %% ^ keyword.control.mermaid
118 | %% ^^^^^^^^^^^^^^^^^^^ string
119 | Note over B,C: Bob whispers when sick
120 | %%^^^^ keyword.control.mermaid
121 | %% ^^^^ entity.name.function.mermaid
122 | %% ^ variable
123 | %% ^ keyword.control.mermaid
124 | %% ^ variable
125 | %% ^ keyword.control.mermaid
126 | %% ^^^^^^^^^^^^^^^^^^^^^^ string
127 | %% loop
128 | loop Every minute
129 | %%^^^^ keyword.control.mermaid
130 | %% ^^^^^^^^^^^^ string
131 | B-->C: Can you hear me?
132 | %% ^ variable
133 | %% ^^^ keyword.control.mermaid
134 | %% ^ variable
135 | %% ^ keyword.control.mermaid
136 | %% ^^^^^^^^^^^^^^^^ string
137 | end
138 | %%^^^ keyword.control.mermaid
139 | %% alt
140 | alt is sick
141 | %%^^^ keyword.control.mermaid
142 | %% ^^^^^^^ string
143 | B-->C: Not so good :(
144 | %% ^ variable
145 | %% ^^^ keyword.control.mermaid
146 | %% ^ variable
147 | %% ^ keyword.control.mermaid
148 | %% ^^^^^^^^^^^^^^ string
149 | else is well
150 | %%^^^^ keyword.control.mermaid
151 | %% ^^^^^^^ string
152 | B->C: Feeling fresh like a daisy
153 | %% ^ variable
154 | %% ^^ keyword.control.mermaid
155 | %% ^ variable
156 | %% ^ keyword.control.mermaid
157 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^ string
158 | end
159 | %%^^^ keyword.control.mermaid
160 | opt Extra response
161 | %%^^^ keyword.control.mermaid
162 | %% ^^^^^^^^^^^^^^ string
163 | B->C: You, Carol?
164 | %% ^ variable
165 | %% ^^ keyword.control.mermaid
166 | %% ^ variable
167 | %% ^ keyword.control.mermaid
168 | %% ^^^^^^^^^^^ string
169 | end
170 | %%^^^ keyword.control.mermaid
171 | %% par
172 | par Action 1
173 | %%^^^ keyword.control.mermaid
174 | %% ^^^^^^^^ string
175 | B-->C: I'm good
176 | %% ^ variable
177 | %% ^^^ keyword.control.mermaid
178 | %% ^ variable
179 | %% ^ keyword.control.mermaid
180 | %% ^^^^^^^^ string
181 | and Action 2
182 | %%^^^ keyword.control.mermaid
183 | %% ^^^^^^^^ string
184 | B->>C: I'm better now
185 | %% ^ variable
186 | %% ^^^ keyword.control.mermaid
187 | %% ^ variable
188 | %% ^ keyword.control.mermaid
189 | %% ^^^^^^^^^^^^^^ string
190 | end
191 | %%^^^ keyword.control.mermaid
192 | rect rgba(128, 128, 128, 0.5)
193 | %%^^^^ keyword.control.mermaid
194 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ string
195 | B->>C: So colourful!
196 | %% ^ variable
197 | %% ^^^ keyword.control.mermaid
198 | %% ^ variable
199 | %% ^ keyword.control.mermaid
200 | %% ^^^^^^^^^^^^^ string
201 | critical Establish a connection to the DB
202 | %%^^^^^^^^ keyword.control.mermaid
203 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
204 | Service-->DB: connect
205 | %% ^^^^^^^ variable
206 | %% ^^^ keyword.control.mermaid
207 | %% ^^ variable
208 | %% ^ keyword.control.mermaid
209 | %% ^^^^^^^ string
210 | option Network timeout
211 | %%^^^^^^ keyword.control.mermaid
212 | %% ^^^^^^^^^^^^^^^ string
213 | Service-->Service: Log error
214 | %% ^^^^^^^ variable
215 | %% ^^^ keyword.control.mermaid
216 | %% ^^^^^^^ variable
217 | %% ^ keyword.control.mermaid
218 | %% ^^^^^^^^^ string
219 | end
220 | %%^^^ keyword.control.mermaid
221 | end
222 | %% <--- keyword.control.mermaid
223 | box transparent A colorless box with text
224 | %%^^^ keyword.control.mermaid
225 | %% ^^^^^^^^^^^ entity.name.function.mermaid
226 | ^^^^^^^^^^^^^^^^^^^^^^^^^ string
227 | box Aqua My Boxy Box
228 | %%^^^ keyword.control.mermaid
229 | %% ^^^^^^^^^^^^^^^^ string
230 |
--------------------------------------------------------------------------------
/tests/diagrams/requirement.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "requirement diagram test"
2 |
3 | requirementDiagram
4 | %% <------------------ keyword.control.mermaid
5 | %% a comment
6 | %% ^^^^^^^^^^^^ comment
7 | requirement test_req {
8 | %% ^^^^^^^^^^^ keyword.control.mermaid
9 | %% ^^^^^^^^ variable
10 | %% ^ keyword.control.mermaid
11 | id: 1
12 | %% ^^^ keyword.control.mermaid
13 | %% ^ variable
14 | text: the test text.
15 | %% ^^^^^ keyword.control.mermaid
16 | %% ^^^^^^^^^^^^^^ string
17 | risk: high
18 | %% ^^^^^ keyword.control.mermaid
19 | %% ^^^^ entity.name.function.mermaid
20 | verifymethod: test
21 | %% ^^^^^^^^^^^^^ keyword.control.mermaid
22 | %% ^^^^ entity.name.function.mermaid
23 | }
24 | %% ^ keyword.control.mermaid
25 |
26 | functionalRequirement test_req2 {
27 | %% ^^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
28 | %% ^^^^^^^^^ variable
29 | %% ^ keyword.control.mermaid
30 | id: 1.1
31 | %% ^^^ keyword.control.mermaid
32 | %% ^^^ variable
33 | text: the second test text.
34 | %% ^^^^^ keyword.control.mermaid
35 | %% ^^^^^^^^^^^^^^^^^^^^^ string
36 | risk: low
37 | %% ^^^^^ keyword.control.mermaid
38 | %% ^^^ entity.name.function.mermaid
39 | verifymethod: inspection
40 | %% ^^^^^^^^^^^^^ keyword.control.mermaid
41 | %% ^^^^^^^^^^ entity.name.function.mermaid
42 | }
43 | %% ^ keyword.control.mermaid
44 |
45 | performanceRequirement test_req3 {
46 | %% ^^^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
47 | %% ^^^^^^^^^ variable
48 | %% ^ keyword.control.mermaid
49 | id: 1.2
50 | %% ^^^ keyword.control.mermaid
51 | %% ^^^ variable
52 | text: the third test text.
53 | %% ^^^^^ keyword.control.mermaid
54 | %% ^^^^^^^^^^^^^^^^^^^^ string
55 | risk: medium
56 | %% ^^^^^ keyword.control.mermaid
57 | %% ^^^^^^ entity.name.function.mermaid
58 | verifymethod: demonstration
59 | %% ^^^^^^^^^^^^^ keyword.control.mermaid
60 | %% ^^^^^^^^^^^^^ entity.name.function.mermaid
61 | }
62 | %% ^ keyword.control.mermaid
63 |
64 | interfaceRequirement test_req4 {
65 | %% ^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
66 | %% ^^^^^^^^^ variable
67 | %% ^ keyword.control.mermaid
68 | id: 1.2.1
69 | %% ^^^ keyword.control.mermaid
70 | %% ^^^^^ variable
71 | text: the fourth test text.
72 | %% ^^^^^ keyword.control.mermaid
73 | %% ^^^^^^^^^^^^^^^^^^^^^ string
74 | risk: medium
75 | %% ^^^^^ keyword.control.mermaid
76 | %% ^^^^^^ entity.name.function.mermaid
77 | verifymethod: analysis
78 | %% ^^^^^^^^^^^^^ keyword.control.mermaid
79 | %% ^^^^^^^^ entity.name.function.mermaid
80 | }
81 | %% ^ keyword.control.mermaid
82 |
83 | physicalRequirement test_req5 {
84 | %% ^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
85 | %% ^^^^^^^^^ variable
86 | %% ^ keyword.control.mermaid
87 | id: 1.2.2
88 | %% ^^^ keyword.control.mermaid
89 | %% ^^^^^ variable
90 | text: the fifth test text.
91 | %% ^^^^^ keyword.control.mermaid
92 | %% ^^^^^^^^^^^^^^^^^^^^ string
93 | risk: medium
94 | %% ^^^^^ keyword.control.mermaid
95 | %% ^^^^^^ entity.name.function.mermaid
96 | verifymethod: analysis
97 | %% ^^^^^^^^^^^^^ keyword.control.mermaid
98 | %% ^^^^^^^^ entity.name.function.mermaid
99 | }
100 | %% ^ keyword.control.mermaid
101 |
102 | designConstraint test_req6 {
103 | %% ^^^^^^^^^^^^^^^^ keyword.control.mermaid
104 | %% ^^^^^^^^^ variable
105 | %% ^ keyword.control.mermaid
106 | id: 1.2.3
107 | %% ^^^ keyword.control.mermaid
108 | %% ^^^^^ variable
109 | text: the sixth test text.
110 | %% ^^^^^ keyword.control.mermaid
111 | %% ^^^^^^^^^^^^^^^^^^^^ string
112 | risk: medium
113 | %% ^^^^^ keyword.control.mermaid
114 | %% ^^^^^^ entity.name.function.mermaid
115 | verifymethod: analysis
116 | %% ^^^^^^^^^^^^^ keyword.control.mermaid
117 | %% ^^^^^^^^ entity.name.function.mermaid
118 | }
119 | %% ^ keyword.control.mermaid
120 |
121 | element test_entity {
122 | %% ^^^^^^^ keyword.control.mermaid
123 | %% ^^^^^^^^^^^ variable
124 | %% ^ keyword.control.mermaid
125 | type: simulation
126 | %% ^^^^^ keyword.control.mermaid
127 | %% ^^^^^^^^^^ variable
128 | }
129 | %% ^ keyword.control.mermaid
130 |
131 | element test_entity2 {
132 | %% ^^^^^^^ keyword.control.mermaid
133 | %% ^^^^^^^^^^^^ variable
134 | %% ^ keyword.control.mermaid
135 | type: word doc
136 | %% ^^^^^ keyword.control.mermaid
137 | %% ^^^^^^^^ variable
138 | docRef: reqs/test_entity
139 | %% ^^^^^^^ keyword.control.mermaid
140 | %% ^^^^^^^^^^^^^^^^ variable
141 | }
142 | %% ^ keyword.control.mermaid
143 |
144 | element test_entity3 {
145 | %% ^^^^^^^ keyword.control.mermaid
146 | %% ^^^^^^^^^^^^ variable
147 | %% ^ keyword.control.mermaid
148 | type: "test suite"
149 | %% ^^^^^ keyword.control.mermaid
150 | %% ^^^^^^^^^^^^ variable
151 | docRef: github.com/all_the_tests
152 | %% ^^^^^^^ keyword.control.mermaid
153 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ variable
154 | }
155 | %% ^ keyword.control.mermaid
156 |
157 | test_entity - satisfies -> test_req2
158 | %% ^^^^^^^^^^^ variable
159 | %% ^ keyword.control.mermaid
160 | %% ^^^^^^^^^ keyword.control.mermaid
161 | %% ^^ keyword.control.mermaid
162 | %% ^^^^^^^^^ variable
163 | test_req - traces -> test_req2
164 | %% ^^^^^^^^ variable
165 | %% ^ keyword.control.mermaid
166 | %% ^^^^^^ keyword.control.mermaid
167 | %% ^^ keyword.control.mermaid
168 | %% ^^^^^^^^^ variable
169 | test_req - contains -> test_req3
170 | %% ^^^^^^^^ variable
171 | %% ^ keyword.control.mermaid
172 | %% ^^^^^^^^ keyword.control.mermaid
173 | %% ^^ keyword.control.mermaid
174 | %% ^^^^^^^^^ variable
175 | test_req3 - contains -> test_req4
176 | %% ^^^^^^^^^ variable
177 | %% ^ keyword.control.mermaid
178 | %% ^^^^^^^^ keyword.control.mermaid
179 | %% ^^ keyword.control.mermaid
180 | %% ^^^^^^^^^ variable
181 | test_req4 - derives -> test_req5
182 | %% ^^^^^^^^^ variable
183 | %% ^ keyword.control.mermaid
184 | %% ^^^^^^^ keyword.control.mermaid
185 | %% ^^ keyword.control.mermaid
186 | %% ^^^^^^^^^ variable
187 | test_req5 - refines -> test_req6
188 | %% ^^^^^^^^^ variable
189 | %% ^ keyword.control.mermaid
190 | %% ^^^^^^^ keyword.control.mermaid
191 | %% ^^ keyword.control.mermaid
192 | %% ^^^^^^^^^ variable
193 | test_entity3 - verifies -> test_req5
194 | %% ^^^^^^^^^^^^ variable
195 | %% ^ keyword.control.mermaid
196 | %% ^^^^^^^^ keyword.control.mermaid
197 | %% ^^ keyword.control.mermaid
198 | %% ^^^^^^^^^ variable
199 | test_req <- copies - test_entity2
200 | %% ^^^^^^^^ variable
201 | %% ^^ keyword.control.mermaid
202 | %% ^^^^^^ keyword.control.mermaid
203 | %% ^ keyword.control.mermaid
204 | %% ^^^^^^^^^^^^ variable
205 |
--------------------------------------------------------------------------------
/tests/diagrams/er.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "er diagram test"
2 |
3 | erDiagram
4 | %% <--------- keyword.control.mermaid
5 | ANOTHER-ENTITY1
6 | %%^^^^^^^^^^^^^^^ variable
7 | attribute-entity {
8 | %%^^^^^^^^^^^^^^^^ variable
9 | %% ^ keyword.control.mermaid
10 | string name
11 | %% ^^^^^^ storage.type.mermaid
12 | %% ^^^^ variable
13 | int number
14 | %% ^^^ storage.type.mermaid
15 | %% ^^^^^^ variable
16 | foo another-attribute "attribute comment"
17 | %% ^^^ storage.type.mermaid
18 | %% ^^^^^^^^^^^^^^^^^ variable
19 | %% ^^^^^^^^^^^^^^^^^^^ string
20 | guid foreign-key FK "comment special characters (){}'_-!#$%^&*+=?,\'"
21 | %% ^^^^ storage.type.mermaid
22 | %% ^^^^^^^^^^^ variable
23 | %% ^^ keyword.control.mermaid
24 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
25 | guid primary-key PK ""
26 | %% ^^^^ storage.type.mermaid
27 | %% ^^^^^^^^^^^ variable
28 | %% ^^ keyword.control.mermaid
29 | %% ^^ string
30 | guid primary-key PK, FK ""
31 | %% ^^^^ storage.type.mermaid
32 | %% ^^^^^^^^^^^ variable
33 | %% ^^^^^^ keyword.control.mermaid
34 | %% ^^ string
35 | guid primary-key PK,FK,UK ""
36 | %% ^^^^ storage.type.mermaid
37 | %% ^^^^^^^^^^^ variable
38 | %% ^^^^^^^^ keyword.control.mermaid
39 | %% ^^ string
40 | %% a comment
41 | %% ^^^^^^^^^^^^ comment
42 |
43 | }
44 | %%^ keyword.control.mermaid
45 |
46 | UNINDENTED-ENTITY
47 | %%<--------------- variable
48 | unindented-attribute-entity {
49 | %%<--------------------------- variable
50 | %% ^ keyword.control.mermaid
51 | string name
52 | %%^^^^^^ storage.type.mermaid
53 | %% ^^^^ variable
54 | }
55 | %%<- keyword.control.mermaid
56 |
57 | %% relationships
58 | ANOTHER-ENTITY1 |o..o| ORDER : zero-or-one
59 | %%^^^^^^^^^^^^^^^ variable
60 | %% ^^^^^^ keyword.control.mermaid
61 | %% ^^^^^ variable
62 | %% ^ keyword.control.mermaid
63 | %% ^^^^^^^^^^^ string
64 | ANOTHER-ENTITY1 ||--|| ORDER : exactly-one
65 | %%^^^^^^^^^^^^^^^ variable
66 | %% ^^^^^^ keyword.control.mermaid
67 | %% ^^^^^ variable
68 | %% ^ keyword.control.mermaid
69 | %% ^^^^^^^^^^^ string
70 | ANOTHER-ENTITY1 }o--o{ ORDER : zero-or-more
71 | %%^^^^^^^^^^^^^^^ variable
72 | %% ^^^^^^ keyword.control.mermaid
73 | %% ^^^^^ variable
74 | %% ^ keyword.control.mermaid
75 | %% ^^^^^^^^^^^ string
76 | ANOTHER-ENTITY1 }|..|{ ORDER : one-or-more
77 | %%^^^^^^^^^^^^^^^ variable
78 | %% ^^^^^^ keyword.control.mermaid
79 | %% ^^^^^ variable
80 | %% ^ keyword.control.mermaid
81 | %% ^^^^^^^^^^^ string
82 | ANOTHER-ENTITY1}|..|{OTHER:""
83 | %%^^^^^^^^^^^^^^^ variable
84 | %% ^^^^^^ keyword.control.mermaid
85 | %% ^^^^^ variable
86 | %% ^ keyword.control.mermaid
87 | %% ^^^^^^^^^^^ string
88 | ANOTHER-ENTITY1 }|..|{ OTHER : "multiple words"
89 | %%^^^^^^^^^^^^^^^ variable
90 | %% ^^^^^^ keyword.control.mermaid
91 | %% ^^^^^ variable
92 | %% ^ keyword.control.mermaid
93 | %% ^^^^^^^^^^^ string
94 | %% relationship aliases
95 | ANOTHER-ENTITY1 one or zero..one or zero ORDER : "zero or one"
96 | %%^^^^^^^^^^^^^^^ variable
97 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
98 | %% ^^^^^ variable
99 | %% ^ keyword.control.mermaid
100 | %% ^^^^^^^^^^^^^ string
101 | ANOTHER-ENTITY1 one or more..one or more ORDER : "one or more"
102 | %%^^^^^^^^^^^^^^^ variable
103 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
104 | %% ^^^^^ variable
105 | %% ^ keyword.control.mermaid
106 | %% ^^^^^^^^^^^^^ string
107 | ANOTHER-ENTITY1 one or many..one or many ORDER : "one or more"
108 | %%^^^^^^^^^^^^^^^ variable
109 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
110 | %% ^^^^^ variable
111 | %% ^ keyword.control.mermaid
112 | %% ^^^^^^^^^^^^^ string
113 | ANOTHER-ENTITY1 zero or one..zero or one ORDER : "zero or one"
114 | %%^^^^^^^^^^^^^^^ variable
115 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
116 | %% ^^^^^ variable
117 | %% ^ keyword.control.mermaid
118 | %% ^^^^^^^^^^^^^ string
119 | ANOTHER-ENTITY1 zero or more..zero or more ORDER : "zero or more"
120 | %%^^^^^^^^^^^^^^^ variable
121 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
122 | %% ^^^^^ variable
123 | %% ^ keyword.control.mermaid
124 | %% ^^^^^^^^^^^^^^ string
125 | ANOTHER-ENTITY1 zero or many..zero or many ORDER : "zero or more"
126 | %%^^^^^^^^^^^^^^^ variable
127 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
128 | %% ^^^^^ variable
129 | %% ^ keyword.control.mermaid
130 | %% ^^^^^^^^^^^^^^ string
131 | ANOTHER-ENTITY1 many(0)..many(0) ORDER : "zero or more"
132 | %%^^^^^^^^^^^^^^^ variable
133 | %% ^^^^^^^^^^^^^^^^ keyword.control.mermaid
134 | %% ^^^^^ variable
135 | %% ^ keyword.control.mermaid
136 | %% ^^^^^^^^^^^^^^ string
137 | ANOTHER-ENTITY1 many(1)..many(1) ORDER : "one or more"
138 | %%^^^^^^^^^^^^^^^ variable
139 | %% ^^^^^^^^^^^^^^^^ keyword.control.mermaid
140 | %% ^^^^^ variable
141 | %% ^ keyword.control.mermaid
142 | %% ^^^^^^^^^^^^^^ string
143 | ANOTHER-ENTITY1 only one..only one ORDER : "exactly one"
144 | %%^^^^^^^^^^^^^^^ variable
145 | %% ^^^^^^^^^^^^^^^^^^ keyword.control.mermaid
146 | %% ^^^^^ variable
147 | %% ^ keyword.control.mermaid
148 | %% ^^^^^^^^^^^^^ string
149 | ANOTHER-ENTITY1 1..1 ORDER : "exactly one"
150 | %%^^^^^^^^^^^^^^^ variable
151 | %% ^^^^ keyword.control.mermaid
152 | %% ^^^^^ variable
153 | %% ^ keyword.control.mermaid
154 | %% ^^^^^^^^^^^^^ string
155 | ANOTHER-ENTITY1 1+..1+ ORDER : "one or more"
156 | %%^^^^^^^^^^^^^^^ variable
157 | %% ^^^^^^ keyword.control.mermaid
158 | %% ^^^^^ variable
159 | %% ^ keyword.control.mermaid
160 | %% ^^^^^^^^^^^^^ string
161 | ANOTHER-ENTITY1 0+..0+ ORDER : "zero or more"
162 | %%^^^^^^^^^^^^^^^ variable
163 | %% ^^^^^^ keyword.control.mermaid
164 | %% ^^^^^ variable
165 | %% ^ keyword.control.mermaid
166 | %% ^^^^^^^^^^^^^^ string
167 | a[alias]
168 | %%^ variable
169 | %% ^ keyword.control.mermaid
170 | %% ^^^^^ string
171 | %% ^ keyword.control.mermaid
172 | n["named alias"] {
173 | %%^ variable
174 | %% ^ keyword.control.mermaid
175 | %% ^^^^^^^^^^^^^ string
176 | %% ^ keyword.control.mermaid
177 | %% ^ keyword.control.mermaid
178 | string email
179 | }
180 | %%^ keyword.control.mermaid
181 |
--------------------------------------------------------------------------------
/syntaxes/diagrams/classDiagram.yaml:
--------------------------------------------------------------------------------
1 | - comment: Class Diagram
2 | begin: ^\s*(classDiagram)
3 | beginCaptures:
4 | '1':
5 | name: keyword.control.mermaid
6 | patterns:
7 | - match: \%%.*
8 | name: comment
9 | - comment: '(class name) ("multiplicity relationship")? (relationship) ("multiplicity relationship")? (class name) :? (labelText)?'
10 | match: !regex |-
11 | ([\w-]+) # class name
12 | \s("(?:\d+|\*|0..\d+|1..\d+|1..\*)")? # multiplicity relationship
13 | \s?(--o|--\*|\<--|--\>|<\.\.|\.\.\>|\<\|\.\.|\.\.\|\>|\<\|--|--\|>|--\*|--|\.\.|\*--|o--) # relationship
14 | \s("(?:\d+|\*|0..\d+|1..\d+|1..\*)")? # multiplicity relationship
15 | \s?([\w-]+) # class name
16 | \s?(:)? # :
17 | \s(.*)$ # label text
18 | captures:
19 | '1':
20 | name: entity.name.type.class.mermaid
21 | '2':
22 | name: keyword.control.mermaid
23 | '3':
24 | name: keyword.control.mermaid
25 | '4':
26 | name: keyword.control.mermaid
27 | '5':
28 | name: entity.name.type.class.mermaid
29 | '6':
30 | name: keyword.control.mermaid
31 | '7':
32 | name: string
33 | - comment: '(class name) : (visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$'
34 | match: !regex |-
35 | ([\w-]+) # class name
36 | \s?(:) # :
37 | \s([\+~#-])? # visibility
38 | ([\w-]+) # function name
39 | (\() # (
40 | ([\w-]+)? # function param
41 | (~)? # ~
42 | ([\w-]+)? # generic function param
43 | (~)? # ~
44 | \s?([\w-]+)? # function name
45 | (\)) # )
46 | ([*\$]{0,2}) # classifier
47 | \s?([\w-]+)? # return type
48 | (~)? # ~
49 | ([\w-]+)? # generic return type
50 | (~)?$ # ~
51 | captures:
52 | '1':
53 | name: entity.name.type.class.mermaid
54 | '2':
55 | name: keyword.control.mermaid
56 | '3':
57 | name: keyword.control.mermaid
58 | '4':
59 | name: entity.name.function.mermaid
60 | '5':
61 | name: punctuation.parenthesis.open.mermaid
62 | '6':
63 | name: storage.type.mermaid
64 | '7':
65 | name: punctuation.definition.typeparameters.begin.mermaid
66 | '8':
67 | name: storage.type.mermaid
68 | '9':
69 | name: punctuation.definition.typeparameters.end.mermaid
70 | '10':
71 | name: entity.name.variable.parameter.mermaid
72 | '11':
73 | name: punctuation.parenthesis.closed.mermaid
74 | '12':
75 | name: keyword.control.mermaid
76 | '13':
77 | name: storage.type.mermaid
78 | '14':
79 | name: punctuation.definition.typeparameters.begin.mermaid
80 | '15':
81 | name: storage.type.mermaid
82 | '16':
83 | name: punctuation.definition.typeparameters.end.mermaid
84 | - comment: '(class name) : (visibility)?(datatype/generic data type) (attribute name)$'
85 | match: !regex |-
86 | ([\w-]+) # class name
87 | \s?(:) # :
88 | \s([\+~#-])? # visibility
89 | ([\w-]+) # datatype
90 | (~)? # ~
91 | ([\w-]+)? # datatype
92 | (~)? # ~
93 | \s([\w-]+)?$ # attribute name
94 | captures:
95 | '1':
96 | name: entity.name.type.class.mermaid
97 | '2':
98 | name: keyword.control.mermaid
99 | '3':
100 | name: keyword.control.mermaid
101 | '4':
102 | name: storage.type.mermaid
103 | '5':
104 | name: punctuation.definition.typeparameters.begin.mermaid
105 | '6':
106 | name: storage.type.mermaid
107 | '7':
108 | name: punctuation.definition.typeparameters.end.mermaid
109 | '8':
110 | name: entity.name.variable.field.mermaid
111 | - comment: '<<(Annotation)>> (class name)'
112 | match: !regex |-
113 | (<<) # <<
114 | ([\w-]+) # annotation
115 | (>>) # >>
116 | \s?([\w-]+)? # class name
117 | captures:
118 | '1':
119 | name: punctuation.definition.typeparameters.begin.mermaid
120 | '2':
121 | name: storage.type.mermaid
122 | '3':
123 | name: punctuation.definition.typeparameters.end.mermaid
124 | '4':
125 | name: entity.name.type.class.mermaid
126 | - comment: 'class (class name) ~?(generic type)?~? ({)'
127 | begin: !regex |-
128 | (class)\s+ #class
129 | ([\w-]+) # class name
130 | (~)? # ~
131 | ([\w-]+)? # generic type name
132 | (~)? # ~
133 | \s?({) # begin bracket
134 | beginCaptures:
135 | '1':
136 | name: keyword.control.mermaid
137 | '2':
138 | name: entity.name.type.class.mermaid
139 | '3':
140 | name: punctuation.definition.typeparameters.begin.mermaid
141 | '4':
142 | name: storage.type.mermaid
143 | '5':
144 | name: punctuation.definition.typeparameters.end.mermaid
145 | '6':
146 | name: keyword.control.mermaid
147 | patterns:
148 | - match: \%%.*
149 | name: comment
150 | - comment: '(visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$'
151 | begin: !regex |-
152 | \s([\+~#-])? # visibility
153 | ([\w-]+) # function name
154 | (\() # (
155 | beginCaptures:
156 | '1':
157 | name: keyword.control.mermaid
158 | '2':
159 | name: entity.name.function.mermaid
160 | '3':
161 | name: punctuation.parenthesis.open.mermaid
162 | patterns:
163 | - comment: (TBD)
164 | match: !regex |-
165 | \s*,?\s*([\w-]+)? # function param
166 | (~)? # ~
167 | ([\w-]+)? # generic function param
168 | (~)? # ~
169 | \s?([\w-]+)? # function name
170 | captures:
171 | '1':
172 | name: storage.type.mermaid
173 | '2':
174 | name: punctuation.definition.typeparameters.begin.mermaid
175 | '3':
176 | name: storage.type.mermaid
177 | '4':
178 | name: punctuation.definition.typeparameters.end.mermaid
179 | '5':
180 | name: entity.name.variable.parameter.mermaid
181 | end: !regex |-
182 | (\)) # )
183 | ([*\$]{0,2}) # classifier
184 | \s?([\w-]+)? # return type
185 | (~)? # ~
186 | ([\w-]+)? # generic return type
187 | (~)?$ # ~
188 | endCaptures:
189 | '1':
190 | name: punctuation.parenthesis.closed.mermaid
191 | '2':
192 | name: keyword.control.mermaid
193 | '3':
194 | name: storage.type.mermaid
195 | '4':
196 | name: punctuation.definition.typeparameters.begin.mermaid
197 | '5':
198 | name: storage.type.mermaid
199 | '6':
200 | name: punctuation.definition.typeparameters.end.mermaid
201 | - comment: '(visibility)?(datatype/generic data type) (attribute name)$'
202 | match: !regex |-
203 | \s([\+~#-])? # visibility
204 | ([\w-]+) # datatype
205 | (~)? # ~
206 | ([\w-]+)? # datatype
207 | (~)? # ~
208 | \s([\w-]+)?$ # attribute name
209 | captures:
210 | '1':
211 | name: keyword.control.mermaid
212 | '2':
213 | name: storage.type.mermaid
214 | '3':
215 | name: punctuation.definition.typeparameters.begin.mermaid
216 | '4':
217 | name: storage.type.mermaid
218 | '5':
219 | name: punctuation.definition.typeparameters.end.mermaid
220 | '6':
221 | name: entity.name.variable.field.mermaid
222 | - comment: '<<(Annotation)>> (class name)'
223 | match: !regex |-
224 | (<<) # <<
225 | ([\w-]+) # annotation
226 | (>>) # >>
227 | \s?([\w-]+)? # class name
228 | captures:
229 | '1':
230 | name: punctuation.definition.typeparameters.begin.mermaid
231 | '2':
232 | name: storage.type.mermaid
233 | '3':
234 | name: punctuation.definition.typeparameters.end.mermaid
235 | '4':
236 | name: entity.name.type.class.mermaid
237 | end: (})
238 | endCaptures:
239 | '1':
240 | name: keyword.control.mermaid
241 | - comment: 'class (class name) ~?(generic type)?~?'
242 | match: !regex |-
243 | (class)\s+ #class
244 | ([\w-]+) # class name
245 | (~)? # ~
246 | ([\w-]+)? # generic type name
247 | (~)? # ~
248 | captures:
249 | '1':
250 | name: keyword.control.mermaid
251 | '2':
252 | name: entity.name.type.class.mermaid
253 | '3':
254 | name: punctuation.definition.typeparameters.begin.mermaid
255 | '4':
256 | name: storage.type.mermaid
257 | '5':
258 | name: punctuation.definition.typeparameters.end.mermaid
259 | end: (^|\G)(?=\s*[`:~]{3,}\s*$)
260 |
--------------------------------------------------------------------------------
/tests/diagrams/class.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "class diagram test"
2 |
3 | classDiagram
4 | %% <------------ keyword.control.mermaid
5 | Animal <|-- Duck : LabelText
6 | %%^^^^^^ entity.name.type.class.mermaid
7 | %% ^^^^ keyword.control.mermaid
8 | %% ^^^^ entity.name.type.class.mermaid
9 | %% ^ keyword.control.mermaid
10 | %% ^^^^^^^^^ string
11 | class1 --o other
12 | %%^^^^^^ entity.name.type.class.mermaid
13 | %% ^^^ keyword.control.mermaid
14 | %% ^^^^^ entity.name.type.class.mermaid
15 | Animal --o Fish
16 | %%^^^^^^ entity.name.type.class.mermaid
17 | %% ^^^ keyword.control.mermaid
18 | %% ^^^^ entity.name.type.class.mermaid
19 | Animal *-- classD
20 | %%^^^^^^ entity.name.type.class.mermaid
21 | %% ^^^ keyword.control.mermaid
22 | %% ^^^^^^ entity.name.type.class.mermaid
23 | Animal o-- ClassD : Aggregation
24 | %%^^^^^^ entity.name.type.class.mermaid
25 | %% ^^^ keyword.control.mermaid
26 | %% ^^^^^^ entity.name.type.class.mermaid
27 | %% ^ keyword.control.mermaid
28 | %% ^^^^^^^^^^^ string
29 | Animal : +int age
30 | %%^^^^^^ entity.name.type.class.mermaid
31 | %% ^ keyword.control.mermaid
32 | %% ^ keyword.control.mermaid
33 | %% ^^^ storage.type.mermaid
34 | %% ^^^ entity.name.variable.field.mermaid
35 | Animal : +String gender
36 | %%^^^^^^ entity.name.type.class.mermaid
37 | %% ^ keyword.control.mermaid
38 | %% ^ keyword.control.mermaid
39 | %% ^^^^^^ storage.type.mermaid
40 | %% ^^^^^^ entity.name.variable.field.mermaid
41 | Animal: mate()
42 | %%^^^^^^ entity.name.type.class.mermaid
43 | %% ^ keyword.control.mermaid
44 | %% ^^^^ entity.name.function.mermaid
45 | %% ^ punctuation.parenthesis.open.mermaid
46 | %% ^ punctuation.parenthesis.closed.mermaid
47 | Animal : #method(param)* return
48 | %%^^^^^^ entity.name.type.class.mermaid
49 | %% ^ keyword.control.mermaid
50 | %% ^ keyword.control.mermaid
51 | %% ^^^^^^ entity.name.function.mermaid
52 | %% ^ punctuation.parenthesis.open.mermaid
53 | %% ^^^^^ storage.type.mermaid
54 | %% ^ punctuation.parenthesis.closed.mermaid
55 | %% ^^^^^^ storage.type.mermaid
56 | class Duck{
57 | %%^^^^^ keyword.control.mermaid
58 | %% ^^^^ entity.name.type.class.mermaid
59 | %% ^ keyword.control.mermaid
60 | %% Class Members
61 | +String beakColor
62 | %% ^ keyword.control.mermaid
63 | %% ^^^^^^ storage.type.mermaid
64 | %% ^^^^^^^^^ entity.name.variable.field.mermaid
65 | #quack()
66 | %% ^ keyword.control.mermaid
67 | %% ^^^^^ entity.name.function.mermaid
68 | %% ^ punctuation.parenthesis.open.mermaid
69 | %% ^ punctuation.parenthesis.closed.mermaid
70 | +quack(A a, List~B~ b, C c)
71 | %% ^ keyword.control.mermaid
72 | %% ^^^^^ entity.name.function.mermaid
73 | %% ^ punctuation.parenthesis.open.mermaid
74 | %% ^ storage.type.mermaid
75 | %% ^ entity.name.variable.parameter.mermaid
76 | %% ^ source.mermaid
77 | %% ^^^^ storage.type.mermaid
78 | %% ^ punctuation.definition.typeparameters.begin.mermaid
79 | %% ^ storage.type.mermaid
80 | %% ^ punctuation.definition.typeparameters.end.mermaid
81 | %% ^ entity.name.variable.parameter.mermaid
82 | %% ^ storage.type.mermaid
83 | %% ^ entity.name.variable.parameter.mermaid
84 | }
85 | %%^ keyword.control.mermaid
86 | class Fish{
87 | %%^^^^^ keyword.control.mermaid
88 | %% ^^^^ entity.name.type.class.mermaid
89 | %% ^ keyword.control.mermaid
90 | -abstractMethod()*
91 | %% ^ keyword.control.mermaid
92 | %% ^^^^^^^^^^^^^^ entity.name.function.mermaid
93 | %% ^ punctuation.parenthesis.open.mermaid
94 | %% ^ punctuation.parenthesis.closed.mermaid
95 | %% ^ keyword.control.mermaid
96 | staticMethod()$
97 | %% ^^^^^^^^^^^^ entity.name.function.mermaid
98 | %% ^ punctuation.parenthesis.open.mermaid
99 | %% ^ punctuation.parenthesis.closed.mermaid
100 | %% ^ keyword.control.mermaid
101 | +abstractStaticMethod(X x)*$
102 | %% ^ keyword.control.mermaid
103 | %% ^^^^^^^^^^^^^^^^^^^^ entity.name.function.mermaid
104 | %% ^ punctuation.parenthesis.open.mermaid
105 | %% ^ storage.type.mermaid
106 | %% ^ entity.name.variable.parameter.mermaid
107 | %% ^ punctuation.parenthesis.closed.mermaid
108 | %% ^^ keyword.control.mermaid
109 | +abstractStaticMethod(X x)$*
110 | %% ^ keyword.control.mermaid
111 | %% ^^^^^^^^^^^^^^^^^^^^ entity.name.function.mermaid
112 | %% ^ punctuation.parenthesis.open.mermaid
113 | %% ^ storage.type.mermaid
114 | %% ^ entity.name.variable.parameter.mermaid
115 | %% ^ punctuation.parenthesis.closed.mermaid
116 | %% ^^ keyword.control.mermaid
117 | }
118 | %%^ keyword.control.mermaid
119 | %% Class member generics
120 | class Square~Shape~{
121 | %%^^^^^ keyword.control.mermaid
122 | %% ^^^^^^ entity.name.type.class.mermaid
123 | %% ^ punctuation.definition.typeparameters.begin.mermaid
124 | %% ^^^^^ storage.type.mermaid
125 | %% ^ punctuation.definition.typeparameters.end.mermaid
126 | %% ^ keyword.control.mermaid
127 | List~int~ position
128 | %% ^^^^ storage.type.mermaid
129 | %% ^ punctuation.definition.typeparameters.begin.mermaid
130 | %% ^^^ storage.type.mermaid
131 | %% ^ punctuation.definition.typeparameters.end.mermaid
132 | %% ^^^^^^^^ entity.name.variable.field.mermaid
133 | setPoints(List~int~ points)
134 | %% ^^^^^^^^^ entity.name.function.mermaid
135 | %% ^ punctuation.parenthesis.open.mermaid
136 | %% ^^^^ storage.type.mermaid
137 | %% ^ punctuation.definition.typeparameters.begin.mermaid
138 | %% ^^^ storage.type.mermaid
139 | %% ^ punctuation.definition.typeparameters.end.mermaid
140 | %% ^^^^^^ entity.name.variable.parameter.mermaid
141 | %% ^ punctuation.parenthesis.closed.mermaid
142 | getPoints() List~int~
143 | %% ^^^^^^^^^ entity.name.function.mermaid
144 | %% ^ punctuation.parenthesis.open.mermaid
145 | %% ^ punctuation.parenthesis.closed.mermaid
146 | %% ^^^^ storage.type.mermaid
147 | %% ^ punctuation.definition.typeparameters.begin.mermaid
148 | %% ^^^ storage.type.mermaid
149 | %% ^ punctuation.definition.typeparameters.end.mermaid
150 | }
151 | %%^ keyword.control.mermaid
152 | Square : -List~string~ messages
153 | %%^^^^^^ entity.name.type.class.mermaid
154 | %% ^^^^^^^^ entity.name.variable.field.mermaid
155 | %% ^ keyword.control.mermaid
156 | %% ^^^^ storage.type.mermaid
157 | %% ^ punctuation.definition.typeparameters.begin.mermaid
158 | %% ^^^^^^ storage.type.mermaid
159 | %% ^ punctuation.definition.typeparameters.end.mermaid
160 | %% ^^^^^^^^ entity.name.variable.field.mermaid
161 | Square : ~setMessages(List~string~ messages)
162 | %%^^^^^^ entity.name.type.class.mermaid
163 | %% ^ keyword.control.mermaid
164 | %% ^ keyword.control.mermaid
165 | %% ^^^^^^^^^^^ entity.name.function.mermaid
166 | %% ^^^^ storage.type.mermaid
167 | %% ^ punctuation.definition.typeparameters.begin.mermaid
168 | %% ^^^^^^ storage.type.mermaid
169 | %% ^ punctuation.definition.typeparameters.end.mermaid
170 | %% ^^^^^^^^ entity.name.variable.parameter.mermaid
171 | %% ^ punctuation.parenthesis.closed.mermaid
172 | Square : +getMessages() List~string~
173 | %%^^^^^^ entity.name.type.class.mermaid
174 | %% ^ keyword.control.mermaid
175 | %% ^ keyword.control.mermaid
176 | %% ^^^^^^^^^^^ entity.name.function.mermaid
177 | %% ^ punctuation.parenthesis.open.mermaid
178 | %% ^ punctuation.parenthesis.closed.mermaid
179 | %% ^^^^ storage.type.mermaid
180 | %% ^ punctuation.definition.typeparameters.begin.mermaid
181 | %% ^^^^^^ storage.type.mermaid
182 | %% ^ punctuation.definition.typeparameters.end.mermaid
183 |
184 | %% Multiplicity relations
185 | Customer "1" --> "*" Ticket
186 | %%^^^^^^^^ entity.name.type.class.mermaid
187 | %% ^^^ keyword.control.mermaid
188 | %% ^^^ keyword.control.mermaid
189 | %% ^^^ keyword.control.mermaid
190 | %% ^^^^^^ entity.name.type.class.mermaid
191 | Student "1" --> "1..*" Course
192 | %%^^^^^^^ entity.name.type.class.mermaid
193 | %% ^^^ keyword.control.mermaid
194 | %% ^^^ keyword.control.mermaid
195 | %% ^^^^^^ keyword.control.mermaid
196 | %% ^^^^^^ entity.name.type.class.mermaid
197 | Galaxy --> "6" Star : Contains
198 | %%^^^^^^ entity.name.type.class.mermaid
199 | %% ^^^ keyword.control.mermaid
200 | %% ^^^ keyword.control.mermaid
201 | %% ^^^^ entity.name.type.class.mermaid
202 | %% ^ keyword.control.mermaid
203 | %% ^^^^^^^^ string
204 |
205 | %% Annotations
206 | class Annotate1
207 | %%^^^^^ keyword.control.mermaid
208 | %% ^^^^^^^^^ entity.name.type.class.mermaid
209 | <> Animal
210 | %%^^ punctuation.definition.typeparameters.begin.mermaid
211 | %% ^^^^^^^^^ storage.type.mermaid
212 | %% ^^ punctuation.definition.typeparameters.end.mermaid
213 | %% ^^^^^^ entity.name.type.class.mermaid
214 | class Annotate2{
215 | %%^^^^^ keyword.control.mermaid
216 | %% ^^^^^^^^^ entity.name.type.class.mermaid
217 | %% ^ keyword.control.mermaid
218 | <>
219 | %% ^^ punctuation.definition.typeparameters.begin.mermaid
220 | %% ^^^^^^^ storage.type.mermaid
221 | %% ^^ punctuation.definition.typeparameters.end.mermaid
222 | }
223 | %%^ keyword.control.mermaid
--------------------------------------------------------------------------------
/tests/diagrams/graph.test.mermaid:
--------------------------------------------------------------------------------
1 | %% SYNTAX TEST "source.mermaid" "graph/flowchart test"
2 |
3 | graph TB
4 | %% <----- keyword.control.mermaid
5 | %% ^^ entity.name.function.mermaid
6 | ID-4
7 | %%^^^^ variable
8 | %% Entity[Text]
9 | A["
10 | %%^ variable
11 | %% ^ keyword.control.mermaid
12 | %% ^ string
13 | Hard
14 | %% ^^^^ string
15 | edge
16 | %% ^^^^ string
17 | "]
18 | %%^ string
19 | %% ^ keyword.control.mermaid
20 | ID-1[Node 1]
21 | %%^^^^ variable
22 | %% ^ keyword.control.mermaid
23 | %% ^^^^^^ string
24 | %% ^ keyword.control.mermaid
25 | ID-2>Node 2]
26 | %%^^^^ variable
27 | %% ^ keyword.control.mermaid
28 | %% ^^^^^^ string
29 | %% ^ keyword.control.mermaid
30 | ID-3(Node 3
text)
31 | %%^^^^ variable
32 | %% ^ keyword.control.mermaid
33 | %% ^^^^^^^^^^^^^^^^ string
34 | %% ^ keyword.control.mermaid
35 | ID-4([Stadium shape])
36 | %%^^^^ variable
37 | %% ^^ keyword.control.mermaid
38 | %% ^^^^^^^^^^^^^ string
39 | %% ^^ keyword.control.mermaid
40 | ID-4[[Subroutine shape]]
41 | %%^^^^ variable
42 | %% ^^ keyword.control.mermaid
43 | %% ^^^^^^^^^^^^^^^^ string
44 | %% ^^ keyword.control.mermaid
45 | ID-4[(Cylindrical shape)]
46 | %%^^^^ variable
47 | %% ^^ keyword.control.mermaid
48 | %% ^^^^^^^^^^^^^^^^^ string
49 | %% ^^ keyword.control.mermaid
50 | ID-4((Circle shape))
51 | %%^^^^ variable
52 | %% ^^ keyword.control.mermaid
53 | %% ^^^^^^^^^^^^ string
54 | %% ^^ keyword.control.mermaid
55 | %% Entity--Entity
56 | ID-1---ID-2
57 | %%^^^^ variable
58 | %% ^^^ keyword.control.mermaid
59 | %% ^^^^ variable
60 |
61 | ID-1 --> ID-3
62 | %%^^^^ variable
63 | %% ^^^ keyword.control.mermaid
64 | %% ^^^ variable
65 | ID-1<-->ID-2
66 | %% ^^^^ keyword.control.mermaid
67 | %%^^^^ variable
68 | %% ^^^^ variable
69 | %% Entity--Text--Entity
70 | ID-2--Link between 2 and 3---ID-3
71 | %%^^^^ variable
72 | %% ^^ keyword.control.mermaid
73 | %% ^^^^^^^^^^^^^^^^^^^^ string
74 | %% ^^^ keyword.control.mermaid
75 | %% ^^^^ variable
76 | B--"[b]\nb"-->C
77 | %%^ variable
78 | %% ^^ keyword.control.mermaid
79 | %% ^^^^^^^^^^^^^^^ string
80 | %% ^^^ keyword.control.mermaid
81 | %% ^ variable
82 | ID-3-->|Action from 3 to 1|ID-1
83 | %%^^^^ variable
84 | %% ^^^^ keyword.control.mermaid
85 | %% ^^^^^^^^^^^^^^^^^^ string
86 | %% ^ keyword.control.mermaid
87 | %% ^^^^ variable
88 | ID-3 -- "Action from 3 to 2. p/w: '_-!#$%^&*+=?,\'" --> ID-2
89 | %%^^^^ variable
90 | %% ^^ keyword.control.mermaid
91 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
92 | %% ^^^ keyword.control.mermaid
93 | %% ^^^^ variable
94 | ID-3--|This is the text|ID-1
95 | %%^^^^ variable
96 | %% ^^^ keyword.control.mermaid
97 | %% ^^^^^^^^^^^^^^^^ string
98 | %% ^ keyword.control.mermaid
99 | %% ^^^^ variable
100 | ID-3-->|This is the text|ID-1
101 | %%^^^^ variable
102 | %% ^^^^ keyword.control.mermaid
103 | %% ^^^^^^^^^^^^^^^^ string
104 | %% ^ keyword.control.mermaid
105 | %% ^^^^ variable
106 | ID-3-- This is the text -->ID-1
107 | %%^^^^ variable
108 | %% ^^ keyword.control.mermaid
109 | %% ^^^^^^^^^^^^^^^^ string
110 | %% ^^^ keyword.control.mermaid
111 | %% ^^^^ variable
112 | %% Complex cases
113 | A[Hard edge] -->|Link text| B(Round edge)
114 | %%^ variable
115 | %% ^ keyword.control.mermaid
116 | %% ^^^^^^^^^ string
117 | %% ^ keyword.control.mermaid
118 | %% ^^^^ keyword.control.mermaid
119 | %% ^^^^^^^^^ string
120 | %% ^ keyword.control.mermaid
121 | %% ^ variable
122 | %% ^ keyword.control.mermaid
123 | %% ^^^^^^^^^^ string
124 | %% ^ keyword.control.mermaid
125 | A["
126 | %%^ variable
127 | %% ^ keyword.control.mermaid
128 | %% ^ string
129 | Hard
130 | %% ^^^^ string
131 | edge
132 | %% ^^^^ string
133 | "] -->|"
134 | %%^ string
135 | %% ^ keyword.control.mermaid
136 | %% ^^^^ keyword.control.mermaid
137 | %% ^ string
138 | Link
139 | %% ^^^^ string
140 | text
141 | %% ^^^^ string
142 | "| B("
143 | %%^ string
144 | %% ^ keyword.control.mermaid
145 | %% ^ variable
146 | %% ^ keyword.control.mermaid
147 | %% ^ string
148 | Round
149 | %% ^^^^ string
150 | edge
151 | %% ^^^^ string
152 | ")
153 | %%^ string
154 | %% ^ keyword.control.mermaid
155 |
156 | ID-1---ID-2(Text multi word)
157 | %%^^^^ variable
158 | %% ^^^ keyword.control.mermaid
159 | %% ^^^^ variable
160 | %% ^ keyword.control.mermaid
161 | %% ^^^^^^^^^^^^^^^ string
162 | %% ^ keyword.control.mermaid
163 | B --> C{Text}
164 | %%^ variable
165 | %% ^^^ keyword.control.mermaid
166 | %% ^ variable
167 | %% ^ keyword.control.mermaid
168 | %% ^^^^ string
169 | %% ^ keyword.control.mermaid
170 | C -->|One| D[Text]
171 | %%^ variable
172 | %% ^^^^ keyword.control.mermaid
173 | %% ^^^ string
174 | %% ^ keyword.control.mermaid
175 | %% ^ variable
176 | %% ^ keyword.control.mermaid
177 | %% ^^^^ string
178 | %% ^ keyword.control.mermaid
179 | A(A) --> B(B)
180 | %%^ variable
181 | %% ^ keyword.control.mermaid
182 | %% ^ string
183 | %% ^ keyword.control.mermaid
184 | %% ^^^ keyword.control.mermaid
185 | %% ^ variable
186 | %% ^ keyword.control.mermaid
187 | %% ^ string
188 | %% ^ keyword.control.mermaid
189 | C[/C/] --> D>D]
190 | %%^ variable
191 | %% ^ keyword.control.mermaid
192 | %% ^^^ string
193 | %% ^ keyword.control.mermaid
194 | %% ^^^ keyword.control.mermaid
195 | %% ^ variable
196 | %% ^ keyword.control.mermaid
197 | %% ^ string
198 | %% ^ keyword.control.mermaid
199 | %% class/classDef
200 | classDef blue fill:#08f,stroke:#fff;
201 | %%^^^^^^^^ keyword.control.mermaid
202 | %% ^^^^ variable
203 | %% ^^^^^^^^^^^^^^^^^^^^^^ string
204 | class ID-1 blue
205 | %%^^^^^ keyword.control.mermaid
206 | %% ^^^^ variable
207 | %% ^^^^ string
208 | class ID-1,ID-2 red
209 | %%^^^^^ keyword.control.mermaid
210 | %% ^^^^^^^^^ variable
211 | %% ^^^^ string
212 | %% click
213 | click ID-1 "https://github.com" "Tooltip text" %% comments
214 | %%^^^^^ keyword.control.mermaid
215 | %% ^^^^ variable
216 | %% ^^^^^^^^^^^^^^^^^^^^ string
217 | %% ^^^^^^^^^^^^^^ string
218 | click ID-2 alert "Tooltip for a callback"
219 | %%^^^^^ keyword.control.mermaid
220 | %% ^^^^ variable
221 | %% ^^^^^ variable
222 | %% ^^^^^^^^^^^^^^^^^^^^^^^^ string
223 | subgraph A subgraph
224 | %%^^^^^^^^ keyword.control.mermaid
225 | %% ^^^^^^^^^^ entity.name.function.mermaid
226 | ID-4{Node 4}
227 | %% ^^^^ variable
228 | %% ^ keyword.control.mermaid
229 | %% ^^^^ variable
230 | %% ^ keyword.control.mermaid
231 | %% ^^^^^^ string
232 | %% ^ keyword.control.mermaid
233 | ID-6["Node 6 (same #quot;shape#quot;)"]
234 | %% ^^^^ variable
235 | %% ^ keyword.control.mermaid
236 | %% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string
237 | %% ^ keyword.control.mermaid
238 | ID-4-.->ID-5
239 | %% ^^^^ variable
240 | %% ^^^^ keyword.control.mermaid
241 | %% ^^^^ variable
242 | ID-5 -. Action from 5 to 4 .-> ID-4
243 | %% ^^^^ variable
244 | %% ^^ keyword.control.mermaid
245 | %% ^^^^^^^^^^^^^^^^^^ string
246 | %% ^^ keyword.control.mermaid
247 | %% ^^^^ variable
248 | ID-4.->ID-5
249 | %% ^^^^ variable
250 | %% ^^^ keyword.control.mermaid
251 | %% ^^^^ variable
252 | ID-2 -.-|Text| ID-2
253 | %% ^^^^ variable
254 | %% ^^^^ keyword.control.mermaid
255 | %% ^^^^ string
256 | %% ^ keyword.control.mermaid
257 | %% ^^^^ variable
258 | ID-2 ..-|Text| ID-2
259 | %% ^^^^ variable
260 | %% ^^^^ keyword.control.mermaid
261 | %% ^^^^ string
262 | %% ^ keyword.control.mermaid
263 | %% ^^^^ variable
264 | ID-5==>ID-6
265 | %% ^^^^ variable
266 | %% ^^^ keyword.control.mermaid
267 | %% ^^^^ variable
268 | ID-6 == Action from 6 to 5 ==> ID-5
269 | %% ^^^^ variable
270 | %% ^^ keyword.control.mermaid
271 | %% ^^^^^^^^^^^^^^^^^^ string
272 | %% ^^^ keyword.control.mermaid
273 | %% ^^^^ variable
274 | end
275 | %%~~~ keyword.control.mermaid
276 |
277 | subgraph 多电压测试
278 | %%^^^^^^^^ keyword.control.mermaid
279 | %% ^^^^^^^^ entity.name.function.mermaid
280 | 多电压测试1
281 | %% ^^^^^^^^^ variable
282 | end
283 | %%~~~ keyword.control.mermaid
284 | subgraph a[""]
285 | %%^^^^^^^^ keyword.control.mermaid
286 | %% ^ variable
287 | %% ^ keyword.control.mermaid
288 | %% ^^^^^ string
289 | %% ^ keyword.control.mermaid
290 | direction RL
291 | %% ^^^^^^^^^ keyword.control.mermaid
292 | %% ^^ entity.name.function.mermaid
293 | direction BT
294 | %% ^^^^^^^^^ keyword.control.mermaid
295 | %% ^^ entity.name.function.mermaid
296 | direction RB
297 | %% ^^^^^^^^^ keyword.control.mermaid
298 | %% ^^ entity.name.function.mermaid
299 | direction RL
300 | %% ^^^^^^^^^ keyword.control.mermaid
301 | %% ^^ entity.name.function.mermaid
302 | direction TD
303 | %% ^^^^^^^^^ keyword.control.mermaid
304 | %% ^^ entity.name.function.mermaid
305 | direction LR
306 | %% ^^^^^^^^^ keyword.control.mermaid
307 | %% ^^ entity.name.function.mermaid
308 | end
309 | %%~~~ keyword.control.mermaid
310 | end
311 | %% <--- keyword.control.mermaid
312 |
313 | %% negative cases
314 | invalid subgraph invalid
315 | %%^^^^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid
316 |
317 | %% extended node shapes
318 | text@{shape: odd, label: "asdasd"}
319 | %% <---- variable
320 | %% ^^ keyword.control.mermaid
321 | %% ^^^^^^ keyword.control.mermaid
322 | %% ^^^^ entity.name.function.mermaid
323 | %% ^ keyword.control.mermaid
324 | %% ^^^^^^ keyword.control.mermaid
325 | %% ^^^^^^^^^^^^^^ string
326 | %% ^ keyword.control.mermaid
327 | %% different description order, no space between, no "
328 | text@{label: text,shape: odd}
329 | %% <---- variable
330 | %% ^^ keyword.control.mermaid
331 | %% ^^^^^^ keyword.control.mermaid
332 | %% ^^^^^ string
333 | %% ^ keyword.control.mermaid
334 | %% ^^^^^ keyword.control.mermaid
335 | %% ^^^^ entity.name.function.mermaid
336 | %% ^ keyword.control.mermaid
337 | %% single prop in description (label)
338 | text@{label: text}
339 | %% <---- variable
340 | %% ^^ keyword.control.mermaid
341 | %% ^^^^^^ keyword.control.mermaid
342 | %% ^^^^^ string
343 | %% ^ keyword.control.mermaid
344 | %% single prop in description (shape)
345 | text@{shape: lean-r}
346 | %% <---- variable
347 | %% ^^ keyword.control.mermaid
348 | %% ^^^^^^ keyword.control.mermaid
349 | %% ^^^^^^^ entity.name.function.mermaid
350 | %% ^ keyword.control.mermaid
351 | %% space between 'shape' and ':'
352 | text@{shape : lean-r}
353 | %% <---- variable
354 | %% ^^ keyword.control.mermaid
355 | %% ^^^^^^^^^ keyword.control.mermaid
356 | %% ^^^^^^^ entity.name.function.mermaid
357 | %% ^ keyword.control.mermaid
--------------------------------------------------------------------------------
/images/icon/mermaidTail.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icon/iconSVG.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------