PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.9.3
Code Block Pro – Beautiful Syntax Highlighting v1.9.3
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / mermaid.tmLanguage.json

mermaid.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.9.3, at build/shiki/languages/mermaid.tmLanguage.json

1,236 lines 39.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "fileTypes": ["mermaid"],
3 "patterns": [
4 {
5 "include": "#mermaid"
6 }
7 ],
8 "repository": {
9 "mermaid": {
10 "patterns": [
11 {
12 "comment": "Class Diagram",
13 "begin": "^\\s*(classDiagram)",
14 "beginCaptures": {
15 "1": {
16 "name": "keyword.control.mermaid"
17 }
18 },
19 "patterns": [
20 {
21 "match": "\\%%.*",
22 "name": "comment"
23 },
24 {
25 "comment": "(class name) (\"multiplicity relationship\")? (relationship) (\"multiplicity relationship\")? (class name) :? (labelText)?",
26 "match": "([\\w-]+)\\s(\"(?:\\d+|\\*|0..\\d+|1..\\d+|1..\\*)\")?\\s?(--o|--\\*|\\<--|--\\>|<\\.\\.|\\.\\.\\>|\\<\\|\\.\\.|\\.\\.\\|\\>|\\<\\|--|--\\|>|--\\*|--|\\.\\.|\\*--|o--)\\s(\"(?:\\d+|\\*|0..\\d+|1..\\d+|1..\\*)\")?\\s?([\\w-]+)\\s?(:)?\\s(.*)$",
27 "captures": {
28 "1": {
29 "name": "entity.name.type.class.mermaid"
30 },
31 "2": {
32 "name": "keyword.control.mermaid"
33 },
34 "3": {
35 "name": "keyword.control.mermaid"
36 },
37 "4": {
38 "name": "keyword.control.mermaid"
39 },
40 "5": {
41 "name": "entity.name.type.class.mermaid"
42 },
43 "6": {
44 "name": "keyword.control.mermaid"
45 },
46 "7": {
47 "name": "string"
48 }
49 }
50 },
51 {
52 "comment": "(class name) : (visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$",
53 "match": "([\\w-]+)\\s?(:)\\s([\\+~#-])?([\\w-]+)(\\()([\\w-]+)?(~)?([\\w-]+)?(~)?\\s?([\\w-]+)?(\\))([*\\$])?\\s?([\\w-]+)?(~)?([\\w-]+)?(~)?$",
54 "captures": {
55 "1": {
56 "name": "entity.name.type.class.mermaid"
57 },
58 "2": {
59 "name": "keyword.control.mermaid"
60 },
61 "3": {
62 "name": "keyword.control.mermaid"
63 },
64 "4": {
65 "name": "entity.name.function.mermaid"
66 },
67 "5": {
68 "name": "punctuation.parenthesis.open.mermaid"
69 },
70 "6": {
71 "name": "storage.type.mermaid"
72 },
73 "7": {
74 "name": "punctuation.definition.typeparameters.begin.mermaid"
75 },
76 "8": {
77 "name": "storage.type.mermaid"
78 },
79 "9": {
80 "name": "punctuation.definition.typeparameters.end.mermaid"
81 },
82 "10": {
83 "name": "entity.name.variable.parameter.mermaid"
84 },
85 "11": {
86 "name": "punctuation.parenthesis.closed.mermaid"
87 },
88 "12": {
89 "name": "keyword.control.mermaid"
90 },
91 "13": {
92 "name": "storage.type.mermaid"
93 },
94 "14": {
95 "name": "punctuation.definition.typeparameters.begin.mermaid"
96 },
97 "15": {
98 "name": "storage.type.mermaid"
99 },
100 "16": {
101 "name": "punctuation.definition.typeparameters.end.mermaid"
102 }
103 }
104 },
105 {
106 "comment": "(class name) : (visibility)?(datatype/generic data type) (attribute name)$",
107 "match": "([\\w-]+)\\s?(:)\\s([\\+~#-])?([\\w-]+)(~)?([\\w-]+)?(~)?\\s([\\w-]+)?$",
108 "captures": {
109 "1": {
110 "name": "entity.name.type.class.mermaid"
111 },
112 "2": {
113 "name": "keyword.control.mermaid"
114 },
115 "3": {
116 "name": "keyword.control.mermaid"
117 },
118 "4": {
119 "name": "storage.type.mermaid"
120 },
121 "5": {
122 "name": "punctuation.definition.typeparameters.begin.mermaid"
123 },
124 "6": {
125 "name": "storage.type.mermaid"
126 },
127 "7": {
128 "name": "punctuation.definition.typeparameters.end.mermaid"
129 },
130 "8": {
131 "name": "entity.name.variable.field.mermaid"
132 }
133 }
134 },
135 {
136 "comment": "<<(Annotation)>> (class name)",
137 "match": "(<<)([\\w-]+)(>>)\\s?([\\w-]+)?",
138 "captures": {
139 "1": {
140 "name": "punctuation.definition.typeparameters.begin.mermaid"
141 },
142 "2": {
143 "name": "storage.type.mermaid"
144 },
145 "3": {
146 "name": "punctuation.definition.typeparameters.end.mermaid"
147 },
148 "4": {
149 "name": "entity.name.type.class.mermaid"
150 }
151 }
152 },
153 {
154 "comment": "class (class name) ~?(generic type)?~? ({)",
155 "begin": "(class)\\s+([\\w-]+)(~)?([\\w-]+)?(~)?\\s?({)",
156 "beginCaptures": {
157 "1": {
158 "name": "keyword.control.mermaid"
159 },
160 "2": {
161 "name": "entity.name.type.class.mermaid"
162 },
163 "3": {
164 "name": "punctuation.definition.typeparameters.begin.mermaid"
165 },
166 "4": {
167 "name": "storage.type.mermaid"
168 },
169 "5": {
170 "name": "punctuation.definition.typeparameters.end.mermaid"
171 },
172 "6": {
173 "name": "keyword.control.mermaid"
174 }
175 },
176 "patterns": [
177 {
178 "match": "\\%%.*",
179 "name": "comment"
180 },
181 {
182 "comment": "(visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$",
183 "begin": "\\s([\\+~#-])?([\\w-]+)(\\()",
184 "beginCaptures": {
185 "1": {
186 "name": "keyword.control.mermaid"
187 },
188 "2": {
189 "name": "entity.name.function.mermaid"
190 },
191 "3": {
192 "name": "punctuation.parenthesis.open.mermaid"
193 }
194 },
195 "patterns": [
196 {
197 "comment": "(TBD)",
198 "match": "\\s*,?\\s*([\\w-]+)?(~)?([\\w-]+)?(~)?\\s?([\\w-]+)?",
199 "captures": {
200 "1": {
201 "name": "storage.type.mermaid"
202 },
203 "2": {
204 "name": "punctuation.definition.typeparameters.begin.mermaid"
205 },
206 "3": {
207 "name": "storage.type.mermaid"
208 },
209 "4": {
210 "name": "punctuation.definition.typeparameters.end.mermaid"
211 },
212 "5": {
213 "name": "entity.name.variable.parameter.mermaid"
214 }
215 }
216 }
217 ],
218 "end": "(\\))([*\\$])?\\s?([\\w-]+)?(~)?([\\w-]+)?(~)?$",
219 "endCaptures": {
220 "1": {
221 "name": "punctuation.parenthesis.closed.mermaid"
222 },
223 "2": {
224 "name": "keyword.control.mermaid"
225 },
226 "3": {
227 "name": "storage.type.mermaid"
228 },
229 "4": {
230 "name": "punctuation.definition.typeparameters.begin.mermaid"
231 },
232 "5": {
233 "name": "storage.type.mermaid"
234 },
235 "6": {
236 "name": "punctuation.definition.typeparameters.end.mermaid"
237 }
238 }
239 },
240 {
241 "comment": "(visibility)?(datatype/generic data type) (attribute name)$",
242 "match": "\\s([\\+~#-])?([\\w-]+)(~)?([\\w-]+)?(~)?\\s([\\w-]+)?$",
243 "captures": {
244 "1": {
245 "name": "keyword.control.mermaid"
246 },
247 "2": {
248 "name": "storage.type.mermaid"
249 },
250 "3": {
251 "name": "punctuation.definition.typeparameters.begin.mermaid"
252 },
253 "4": {
254 "name": "storage.type.mermaid"
255 },
256 "5": {
257 "name": "punctuation.definition.typeparameters.end.mermaid"
258 },
259 "6": {
260 "name": "entity.name.variable.field.mermaid"
261 }
262 }
263 },
264 {
265 "comment": "<<(Annotation)>> (class name)",
266 "match": "(<<)([\\w-]+)(>>)\\s?([\\w-]+)?",
267 "captures": {
268 "1": {
269 "name": "punctuation.definition.typeparameters.begin.mermaid"
270 },
271 "2": {
272 "name": "storage.type.mermaid"
273 },
274 "3": {
275 "name": "punctuation.definition.typeparameters.end.mermaid"
276 },
277 "4": {
278 "name": "entity.name.type.class.mermaid"
279 }
280 }
281 }
282 ],
283 "end": "(})",
284 "endCaptures": {
285 "1": {
286 "name": "keyword.control.mermaid"
287 }
288 }
289 },
290 {
291 "comment": "class (class name) ~?(generic type)?~?",
292 "match": "(class)\\s+([\\w-]+)(~)?([\\w-]+)?(~)?",
293 "captures": {
294 "1": {
295 "name": "keyword.control.mermaid"
296 },
297 "2": {
298 "name": "entity.name.type.class.mermaid"
299 },
300 "3": {
301 "name": "punctuation.definition.typeparameters.begin.mermaid"
302 },
303 "4": {
304 "name": "storage.type.mermaid"
305 },
306 "5": {
307 "name": "punctuation.definition.typeparameters.end.mermaid"
308 }
309 }
310 }
311 ],
312 "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)"
313 },
314 {
315 "comment": "Entity Relationship Diagram",
316 "begin": "^\\s*(erDiagram)",
317 "beginCaptures": {
318 "1": {
319 "name": "keyword.control.mermaid"
320 }
321 },
322 "patterns": [
323 {
324 "match": "\\%%.*",
325 "name": "comment"
326 },
327 {
328 "comment": "(entity)",
329 "match": "^\\s*([\\w-]+)$",
330 "name": "variable"
331 },
332 {
333 "comment": "(entity) {",
334 "begin": "\\s+([\\w-]+)\\s+({)",
335 "beginCaptures": {
336 "1": {
337 "name": "variable"
338 },
339 "2": {
340 "name": "keyword.control.mermaid"
341 }
342 },
343 "patterns": [
344 {
345 "comment": "(type) (name) (PK|FK)? (\"comment\")?",
346 "match": "\\s*([\\w-]+)\\s+([\\w-]+)\\s+(PK|FK)?\\s*(\"[\"\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*\")?\\s*",
347 "captures": {
348 "1": {
349 "name": "storage.type.mermaid"
350 },
351 "2": {
352 "name": "variable"
353 },
354 "3": {
355 "name": "keyword.control.mermaid"
356 },
357 "4": {
358 "name": "string"
359 }
360 }
361 }
362 ],
363 "end": "(})",
364 "endCaptures": {
365 "1": {
366 "name": "keyword.control.mermaid"
367 }
368 }
369 },
370 {
371 "comment": "(entity) (relationship) (entity) : (label)",
372 "match": "\\s*([\\w-]+)\\s+((?:\\|o|\\|\\||}o|}\\|)(?:..|--)(?:o\\||\\|\\||o{|\\|{))\\s+([\\w-]+)\\s+(:)\\s+((?:\"[\\w\\s]*\")|(?:[\\w-]+))",
373 "captures": {
374 "1": {
375 "name": "variable"
376 },
377 "2": {
378 "name": "keyword.control.mermaid"
379 },
380 "3": {
381 "name": "variable"
382 },
383 "4": {
384 "name": "keyword.control.mermaid"
385 },
386 "5": {
387 "name": "string"
388 }
389 }
390 }
391 ],
392 "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)"
393 },
394 {
395 "comment": "Gantt Diagram",
396 "begin": "^\\s*(gantt)",
397 "beginCaptures": {
398 "1": {
399 "name": "keyword.control.mermaid"
400 }
401 },
402 "patterns": [
403 {
404 "match": "\\%%.*",
405 "name": "comment"
406 },
407 {
408 "match": "(dateFormat)\\s+([\\w-]+)",
409 "captures": {
410 "1": {
411 "name": "keyword.control.mermaid"
412 },
413 "2": {
414 "name": "entity.name.function.mermaid"
415 }
416 }
417 },
418 {
419 "match": "(axisFormat)\\s+([\\w\\%/-]+)",
420 "captures": {
421 "1": {
422 "name": "keyword.control.mermaid"
423 },
424 "2": {
425 "name": "entity.name.function.mermaid"
426 }
427 }
428 },
429 {
430 "match": "(title)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
431 "captures": {
432 "1": {
433 "name": "keyword.control.mermaid"
434 },
435 "2": {
436 "name": "string"
437 }
438 }
439 },
440 {
441 "match": "(section)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
442 "captures": {
443 "1": {
444 "name": "keyword.control.mermaid"
445 },
446 "2": {
447 "name": "string"
448 }
449 }
450 },
451 {
452 "begin": "\\s(.*)(:)",
453 "beginCaptures": {
454 "1": {
455 "name": "string"
456 },
457 "2": {
458 "name": "keyword.control.mermaid"
459 }
460 },
461 "patterns": [
462 {
463 "match": "(crit|done|active|after)",
464 "name": "entity.name.function.mermaid"
465 },
466 {
467 "match": "\\%%.*",
468 "name": "comment"
469 }
470 ],
471 "end": "$"
472 }
473 ],
474 "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)"
475 },
476 {
477 "comment": "Git Graph",
478 "begin": "^\\s*(gitGraph)",
479 "beginCaptures": {
480 "1": {
481 "name": "keyword.control.mermaid"
482 }
483 },
484 "patterns": [
485 {
486 "match": "\\%%.*",
487 "name": "comment"
488 },
489 {
490 "comment": "commit",
491 "begin": "\\s*(commit)",
492 "beginCaptures": {
493 "1": {
494 "name": "keyword.control.mermaid"
495 }
496 },
497 "patterns": [
498 {
499 "comment": "(id)(:) (\"id\")",
500 "match": "\\s*(id)(:)\\s?(\"[^\"\\n]*\")",
501 "captures": {
502 "1": {
503 "name": "keyword.control.mermaid"
504 },
505 "2": {
506 "name": "keyword.control.mermaid"
507 },
508 "3": {
509 "name": "string"
510 }
511 }
512 },
513 {
514 "comment": "(type)(:) (COMMIT_TYPE)",
515 "match": "\\s*(type)(:)\\s?(NORMAL|REVERSE|HIGHLIGHT)",
516 "captures": {
517 "1": {
518 "name": "keyword.control.mermaid"
519 },
520 "2": {
521 "name": "keyword.control.mermaid"
522 },
523 "3": {
524 "name": "entity.name.function.mermaid"
525 }
526 }
527 },
528 {
529 "comment": "(tag)(:) (\"tag\")",
530 "match": "\\s*(tag)(:)\\s?(\"[\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*\")",
531 "captures": {
532 "1": {
533 "name": "keyword.control.mermaid"
534 },
535 "2": {
536 "name": "keyword.control.mermaid"
537 },
538 "3": {
539 "name": "string"
540 }
541 }
542 }
543 ],
544 "end": "$"
545 },
546 {
547 "comment": "(checkout) (branch-name)",
548 "match": "\\s*(checkout)\\s*([^\\s\"]*)",
549 "captures": {
550 "1": {
551 "name": "keyword.control.mermaid"
552 },
553 "2": {
554 "name": "variable"
555 }
556 }
557 },
558 {
559 "comment": "(branch) (branch-name) (order)?(:) (number)",
560 "match": "\\s*(branch)\\s*([^\\s\"]*)\\s*(?:(order)(:)\\s?(\\d+))?",
561 "captures": {
562 "1": {
563 "name": "keyword.control.mermaid"
564 },
565 "2": {
566 "name": "variable"
567 },
568 "3": {
569 "name": "keyword.control.mermaid"
570 },
571 "4": {
572 "name": "keyword.control.mermaid"
573 },
574 "5": {
575 "name": "constant.numeric.decimal.mermaid"
576 }
577 }
578 },
579 {
580 "comment": "(merge) (branch-name) (tag: \"tag-name\")?",
581 "match": "\\s*(merge)\\s*([^\\s\"]*)\\s*(?:(tag)(:)\\s?(\"[^\"\\n]*\"))?",
582 "captures": {
583 "1": {
584 "name": "keyword.control.mermaid"
585 },
586 "2": {
587 "name": "variable"
588 },
589 "3": {
590 "name": "keyword.control.mermaid"
591 },
592 "4": {
593 "name": "keyword.control.mermaid"
594 },
595 "5": {
596 "name": "string"
597 }
598 }
599 },
600 {
601 "comment": "(cherry-pick) (id)(:)(\"commit-id\")",
602 "match": "\\s*(cherry-pick)\\s+(id)(:)\\s*(\"[^\"\\n]*\")",
603 "captures": {
604 "1": {
605 "name": "keyword.control.mermaid"
606 },
607 "2": {
608 "name": "keyword.control.mermaid"
609 },
610 "3": {
611 "name": "keyword.control.mermaid"
612 },
613 "4": {
614 "name": "string"
615 }
616 }
617 }
618 ],
619 "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)"
620 },
621 {
622 "comment": "Graph",
623 "begin": "^\\s*(graph|flowchart)\\s+([A-Za-z\\ 0-9]+)",
624 "beginCaptures": {
625 "1": {
626 "name": "keyword.control.mermaid"
627 },
628 "2": {
629 "name": "entity.name.function.mermaid"
630 }
631 },
632 "patterns": [
633 {
634 "match": "\\%%.*",
635 "name": "comment"
636 },
637 {
638 "match": "\\b(subgraph)\\s+([A-Za-z\\ 0-9]+)",
639 "captures": {
640 "1": {
641 "name": "keyword.control.mermaid"
642 },
643 "2": {
644 "name": "entity.name.function.mermaid"
645 }
646 },
647 "name": "meta.function.mermaid"
648 },
649 {
650 "match": "\\b(end|RB|BT|RL|TD|LR)\\b",
651 "name": "keyword.control.mermaid"
652 },
653 {
654 "comment": "(Entity From)(Graph Link)",
655 "begin": "(\\b[-\\w]+\\b\\s*)(-?-[-\\>]\\|?|=?=[=\\>]|(?:\\.-|-\\.)-?\\>?|<-->)",
656 "beginCaptures": {
657 "1": {
658 "name": "variable"
659 },
660 "2": {
661 "name": "keyword.control.mermaid"
662 }
663 },
664 "patterns": [
665 {
666 "match": "\\%%.*",
667 "name": "comment"
668 },
669 {
670 "comment": "(Graph Link Text)?(Graph Link)(Entity To)?(Edge/Shape)?(Text)?(Edge/Shape)?",
671 "match": "(\\s*(?:\"[^\"]+\")|(?:[\\($&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]*))?\\s*(-?-[-\\>]\\|?|=?=[=\\>]|(?:\\.-|-\\.)-?\\>?|\\|)(\\s*[-\\w]+\\b)(\\[|\\(+|\\>|\\{)?(\\s*[-\\w]+\\b)?(\\]|\\)+|\\})?",
672 "captures": {
673 "1": {
674 "name": "string"
675 },
676 "2": {
677 "name": "keyword.control.mermaid"
678 },
679 "3": {
680 "name": "variable"
681 },
682 "4": {
683 "name": "keyword.control.mermaid"
684 },
685 "5": {
686 "name": "string"
687 },
688 "6": {
689 "name": "keyword.control.mermaid"
690 }
691 }
692 },
693 {
694 "comment": "(Entity To)(Edge/Shape)?(Text)?(Edge/Shape)?",
695 "match": "(\\s*[-\\w]+\\b)(\\[|\\(+|\\>|\\{)?(\\s*[-\\w]+\\b)?(\\]|\\)+|\\})?",
696 "captures": {
697 "1": {
698 "name": "variable"
699 },
700 "2": {
701 "name": "keyword.control.mermaid"
702 },
703 "3": {
704 "name": "string"
705 },
706 "4": {
707 "name": "keyword.control.mermaid"
708 }
709 }
710 }
711 ],
712 "end": "$"
713 },
714 {
715 "comment": "(Entity)(Edge/Shape)(Text)(Edge/Shape)",
716 "begin": "(\\b[-\\w]+\\b\\s*)(\\[|\\(+|\\>|\\{|\\(\\()(\\s*(?:\"[^\"]+\")|(?:[$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]*))(\\]|\\)+|\\}|\\)\\))",
717 "beginCaptures": {
718 "1": {
719 "name": "variable"
720 },
721 "2": {
722 "name": "keyword.control.mermaid"
723 },
724 "3": {
725 "name": "string"
726 },
727 "4": {
728 "name": "keyword.control.mermaid"
729 }
730 },
731 "patterns": [
732 {
733 "comment": "(Entity)(Edge/Shape)(Text)(Edge/Shape)",
734 "match": "(\\s*\\b[-\\w]+\\b\\s*)(\\[|\\(+|\\>|\\{)(\\s*[\"\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)(\\]|\\)+|\\})",
735 "captures": {
736 "1": {
737 "name": "variable"
738 },
739 "2": {
740 "name": "keyword.control.mermaid"
741 },
742 "3": {
743 "name": "string"
744 },
745 "4": {
746 "name": "keyword.control.mermaid"
747 }
748 }
749 },
750 {
751 "comment": "(Graph Link)(Graph Link Text)(Graph Link)(Entity)(Edge/Shape)(Text)(Edge/Shape)",
752 "match": "(\\s*-?-[-\\>]\\|?|=?=[=\\>]|(?:\\.-|-\\.)-?\\>?)(\\s*[-\\w\\s]+\\b)?(-?-[-\\>]\\|?|=?=[=\\>]|(?:\\.-|-\\.)-?\\>?|\\|)?(\\s*\\b[-\\w]+\\b\\s*)(\\[|\\(+|\\>|\\{)(\\s*[\"\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)?(\\]|\\)+|\\})",
753 "captures": {
754 "1": {
755 "name": "keyword.control.mermaid"
756 },
757 "2": {
758 "name": "string"
759 },
760 "3": {
761 "name": "keyword.control.mermaid"
762 },
763 "4": {
764 "name": "variable"
765 },
766 "5": {
767 "name": "keyword.control.mermaid"
768 },
769 "6": {
770 "name": "string"
771 },
772 "7": {
773 "name": "keyword.control.mermaid"
774 }
775 }
776 }
777 ],
778 "end": "$"
779 },
780 {
781 "match": "(\\b[-\\w]+\\b\\s*)",
782 "name": "variable"
783 },
784 {
785 "comment": "(Class)(Node(s))(ClassName)",
786 "match": "\\s*(class)\\s+(\\b[-,\\w]+)\\s+(\\b\\w+\\b)",
787 "captures": {
788 "1": {
789 "name": "keyword.control.mermaid"
790 },
791 "2": {
792 "name": "variable"
793 },
794 "3": {
795 "name": "string"
796 }
797 }
798 },
799 {
800 "comment": "(ClassDef)(ClassName)(Styles)",
801 "match": "\\s*(classDef)\\s+(\\b\\w+\\b)\\s+(\\b[-,:;#\\w]+)",
802 "captures": {
803 "1": {
804 "name": "keyword.control.mermaid"
805 },
806 "2": {
807 "name": "variable"
808 },
809 "3": {
810 "name": "string"
811 }
812 }
813 },
814 {
815 "comment": "(Click)(Entity)(Link)?(Tooltip)",
816 "match": "\\s*(click)\\s+(\\b[-\\w]+\\b\\s*)(\\b\\w+\\b)?\\s(\"*.*\")",
817 "captures": {
818 "1": {
819 "name": "keyword.control.mermaid"
820 },
821 "2": {
822 "name": "variable"
823 },
824 "3": {
825 "name": "variable"
826 },
827 "4": {
828 "name": "string"
829 }
830 }
831 }
832 ],
833 "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)"
834 },
835 {
836 "comment": "Pie Chart",
837 "begin": "^\\s*(pie)",
838 "beginCaptures": {
839 "1": {
840 "name": "keyword.control.mermaid"
841 }
842 },
843 "patterns": [
844 {
845 "match": "\\%%.*",
846 "name": "comment"
847 },
848 {
849 "match": "(title)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
850 "captures": {
851 "1": {
852 "name": "keyword.control.mermaid"
853 },
854 "2": {
855 "name": "string"
856 }
857 }
858 },
859 {
860 "begin": "\\s(.*)(:)",
861 "beginCaptures": {
862 "1": {
863 "name": "string"
864 },
865 "2": {
866 "name": "keyword.control.mermaid"
867 }
868 },
869 "patterns": [
870 {
871 "match": "\\%%.*",
872 "name": "comment"
873 }
874 ],
875 "end": "$"
876 }
877 ],
878 "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)"
879 },
880 {
881 "comment": "Sequence Diagram",
882 "begin": "^\\s*(sequenceDiagram)",
883 "beginCaptures": {
884 "1": {
885 "name": "keyword.control.mermaid"
886 }
887 },
888 "patterns": [
889 {
890 "match": "(\\%%|#).*",
891 "name": "comment"
892 },
893 {
894 "comment": "(title)(title text)",
895 "match": "(title)\\s*(:)?\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!:*+=<>\\'\\\\\\-\\w\\s]*)",
896 "captures": {
897 "1": {
898 "name": "keyword.control.mermaid"
899 },
900 "2": {
901 "name": "keyword.control.mermaid"
902 },
903 "3": {
904 "name": "string"
905 }
906 }
907 },
908 {
909 "comment": "(participant)(Actor)(as)?(Label)?",
910 "match": "\\s*(participant|actor)\\s+((?:(?! as )[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s])+)\\s*(as)?\\s([\"\\(\\)$&%\\^/#.,?!*=<>\\'\\\\\\w\\s]+)?",
911 "captures": {
912 "1": {
913 "name": "keyword.control.mermaid"
914 },
915 "2": {
916 "name": "variable"
917 },
918 "3": {
919 "name": "keyword.control.mermaid"
920 },
921 "4": {
922 "name": "string"
923 }
924 }
925 },
926 {
927 "comment": "(activate/deactivate)(Actor)",
928 "match": "\\s*((?:de)?activate)\\s+(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)",
929 "captures": {
930 "1": {
931 "name": "keyword.control.mermaid"
932 },
933 "2": {
934 "name": "variable"
935 }
936 }
937 },
938 {
939 "comment": "(Note)(direction)(Actor)(,)?(Actor)?(:)(Message)",
940 "match": "\\s*(Note)\\s+((?:left|right)\\sof|over)\\s+(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)(,)?(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)?(:)(?:\\s+([^;#]*))?",
941 "captures": {
942 "1": {
943 "name": "keyword.control.mermaid"
944 },
945 "2": {
946 "name": "entity.name.function.mermaid"
947 },
948 "3": {
949 "name": "variable"
950 },
951 "4": {
952 "name": "keyword.control.mermaid"
953 },
954 "5": {
955 "name": "variable"
956 },
957 "6": {
958 "name": "keyword.control.mermaid"
959 },
960 "7": {
961 "name": "string"
962 }
963 }
964 },
965 {
966 "comment": "(loop)(loop text)",
967 "match": "\\s*(loop)(?:\\s+([^;#]*))?",
968 "captures": {
969 "1": {
970 "name": "keyword.control.mermaid"
971 },
972 "2": {
973 "name": "string"
974 }
975 }
976 },
977 {
978 "comment": "(end)",
979 "match": "\\s*(end)",
980 "captures": {
981 "1": {
982 "name": "keyword.control.mermaid"
983 }
984 }
985 },
986 {
987 "comment": "(alt/else/opt/par/and/autonumber)(text)",
988 "match": "\\s*(alt|else|opt|par|and|rect|autonumber)(?:\\s+([^#;]*))?",
989 "captures": {
990 "1": {
991 "name": "keyword.control.mermaid"
992 },
993 "2": {
994 "name": "string"
995 }
996 }
997 },
998 {
999 "comment": "(Actor)(Arrow)(Actor)(:)(Message)",
1000 "match": "\\s*(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b)\\s*(-?-(?:\\>|x|\\))\\>?[+-]?)\\s*([\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b)\\s*(:)\\s*([^;#]*)",
1001 "captures": {
1002 "1": {
1003 "name": "variable"
1004 },
1005 "2": {
1006 "name": "keyword.control.mermaid"
1007 },
1008 "3": {
1009 "name": "variable"
1010 },
1011 "4": {
1012 "name": "keyword.control.mermaid"
1013 },
1014 "5": {
1015 "name": "string"
1016 }
1017 }
1018 }
1019 ],
1020 "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)"
1021 },
1022 {
1023 "comment": "State Diagram",
1024 "begin": "^\\s*(stateDiagram)",
1025 "beginCaptures": {
1026 "1": {
1027 "name": "keyword.control.mermaid"
1028 }
1029 },
1030 "patterns": [
1031 {
1032 "match": "\\%%.*",
1033 "name": "comment"
1034 },
1035 {
1036 "comment": "}",
1037 "match": "\\s+(})\\s+",
1038 "captures": {
1039 "1": {
1040 "name": "keyword.control.mermaid"
1041 }
1042 }
1043 },
1044 {
1045 "comment": "--",
1046 "match": "\\s+(--)\\s+",
1047 "captures": {
1048 "1": {
1049 "name": "keyword.control.mermaid"
1050 }
1051 }
1052 },
1053 {
1054 "comment": "(state)",
1055 "match": "^\\s*([\\w-]+)$",
1056 "name": "variable"
1057 },
1058 {
1059 "comment": "(state) : (description)",
1060 "match": "([\\w-]+)\\s+(:)\\s+(\\s*[-\\w\\s]+\\b)",
1061 "captures": {
1062 "1": {
1063 "name": "variable"
1064 },
1065 "2": {
1066 "name": "keyword.control.mermaid"
1067 },
1068 "3": {
1069 "name": "string"
1070 }
1071 }
1072 },
1073 {
1074 "comment": "state",
1075 "begin": "(state)",
1076 "beginCaptures": {
1077 "1": {
1078 "name": "keyword.control.mermaid"
1079 }
1080 },
1081 "patterns": [
1082 {
1083 "comment": "\"(description)\" as (state)",
1084 "match": "\\s+(\"[-\\w\\s]+\\b\")\\s+(as)\\s+([\\w-]+)",
1085 "captures": {
1086 "1": {
1087 "name": "string"
1088 },
1089 "2": {
1090 "name": "keyword.control.mermaid"
1091 },
1092 "3": {
1093 "name": "variable"
1094 }
1095 }
1096 },
1097 {
1098 "comment": "(state name) {",
1099 "match": "\\s+([\\w-]+)\\s+({)",
1100 "captures": {
1101 "1": {
1102 "name": "variable"
1103 },
1104 "2": {
1105 "name": "keyword.control.mermaid"
1106 }
1107 }
1108 },
1109 {
1110 "comment": "(state name) <<fork|join>>",
1111 "match": "\\s+([\\w-]+)\\s+(<<(?:fork|join)>>)",
1112 "captures": {
1113 "1": {
1114 "name": "variable"
1115 },
1116 "2": {
1117 "name": "keyword.control.mermaid"
1118 }
1119 }
1120 }
1121 ],
1122 "end": "$"
1123 },
1124 {
1125 "comment": "(state) -->",
1126 "begin": "([\\w-]+)\\s+(-->)",
1127 "beginCaptures": {
1128 "1": {
1129 "name": "variable"
1130 },
1131 "2": {
1132 "name": "keyword.control.mermaid"
1133 }
1134 },
1135 "patterns": [
1136 {
1137 "comment": "(state) (:)? (transition text)?",
1138 "match": "\\s+([\\w-]+)\\s*(:)?\\s*(\\s*[-\\w\\s]+\\b)?",
1139 "captures": {
1140 "1": {
1141 "name": "variable"
1142 },
1143 "2": {
1144 "name": "keyword.control.mermaid"
1145 },
1146 "3": {
1147 "name": "string"
1148 }
1149 }
1150 },
1151 {
1152 "comment": "[*] (:)? (transition text)?",
1153 "match": "(\\[\\*\\])\\s*(:)?\\s*(\\s*[-\\w\\s]+\\b)?",
1154 "captures": {
1155 "1": {
1156 "name": "keyword.control.mermaid"
1157 },
1158 "2": {
1159 "name": "keyword.control.mermaid"
1160 },
1161 "3": {
1162 "name": "string"
1163 }
1164 }
1165 }
1166 ],
1167 "end": "$"
1168 },
1169 {
1170 "comment": "[*] --> (state) (:)? (transition text)?",
1171 "match": "(\\[\\*\\])\\s+(-->)\\s+([\\w-]+)\\s*(:)?\\s*(\\s*[-\\w\\s]+\\b)?",
1172 "captures": {
1173 "1": {
1174 "name": "keyword.control.mermaid"
1175 },
1176 "2": {
1177 "name": "keyword.control.mermaid"
1178 },
1179 "3": {
1180 "name": "variable"
1181 },
1182 "4": {
1183 "name": "keyword.control.mermaid"
1184 },
1185 "5": {
1186 "name": "string"
1187 }
1188 }
1189 },
1190 {
1191 "comment": "note left|right of (state name)",
1192 "match": "(note (?:left|right) of)\\s+([\\w-]+)\\s+(:)\\s*(\\s*[-\\w\\s]+\\b)",
1193 "captures": {
1194 "1": {
1195 "name": "keyword.control.mermaid"
1196 },
1197 "2": {
1198 "name": "variable"
1199 },
1200 "3": {
1201 "name": "keyword.control.mermaid"
1202 },
1203 "4": {
1204 "name": "string"
1205 }
1206 }
1207 },
1208 {
1209 "comment": "note left|right of (state name) (note text) end note",
1210 "begin": "(note (?:left|right) of)\\s+([\\w-]+)(.|\\n)",
1211 "beginCaptures": {
1212 "1": {
1213 "name": "keyword.control.mermaid"
1214 },
1215 "2": {
1216 "name": "variable"
1217 }
1218 },
1219 "contentName": "string",
1220 "end": "(end note)",
1221 "endCaptures": {
1222 "1": {
1223 "name": "keyword.control.mermaid"
1224 }
1225 }
1226 }
1227 ],
1228 "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)"
1229 }
1230 ]
1231 }
1232 },
1233 "scopeName": "source.mermaid",
1234 "name": "mermaid"
1235 }
1236