PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / trunk
Code Block Pro – Beautiful Syntax Highlighting vtrunk
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 trunk, at build/shiki/languages/mermaid.tmLanguage.json

1,348 lines 42.3 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-]+)?(\\))([*\\$]{0,2})\\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": "(\\))([*\\$]{0,2})\\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 "match": "\\%%.*",
364 "name": "comment"
365 }
366 ],
367 "end": "(})",
368 "endCaptures": {
369 "1": {
370 "name": "keyword.control.mermaid"
371 }
372 }
373 },
374 {
375 "comment": "(entity) (relationship) (entity) : (label)",
376 "match": "\\s*([\\w-]+)\\s*((?:\\|o|\\|\\||}o|}\\||one or (?:zero|more|many)|zero or (?:one|more|many)|many\\((?:0|1)\\)|only one|0\\+|1\\+?)(?:..|--)(?:o\\||\\|\\||o{|\\|{|one or (?:zero|more|many)|zero or (?:one|more|many)|many\\((?:0|1)\\)|only one|0\\+|1\\+?))\\s*([\\w-]+)\\s*(:)\\s*((?:\"[\\w\\s]*\")|(?:[\\w-]+))",
377 "captures": {
378 "1": {
379 "name": "variable"
380 },
381 "2": {
382 "name": "keyword.control.mermaid"
383 },
384 "3": {
385 "name": "variable"
386 },
387 "4": {
388 "name": "keyword.control.mermaid"
389 },
390 "5": {
391 "name": "string"
392 }
393 }
394 }
395 ],
396 "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
397 },
398 {
399 "comment": "Gantt Diagram",
400 "begin": "^\\s*(gantt)",
401 "beginCaptures": {
402 "1": {
403 "name": "keyword.control.mermaid"
404 }
405 },
406 "patterns": [
407 {
408 "match": "\\%%.*",
409 "name": "comment"
410 },
411 {
412 "match": "(dateFormat)\\s+([\\w\\-\\.]+)",
413 "captures": {
414 "1": {
415 "name": "keyword.control.mermaid"
416 },
417 "2": {
418 "name": "entity.name.function.mermaid"
419 }
420 }
421 },
422 {
423 "match": "(axisFormat)\\s+([\\w\\%\\/\\\\\\-\\.]+)",
424 "captures": {
425 "1": {
426 "name": "keyword.control.mermaid"
427 },
428 "2": {
429 "name": "entity.name.function.mermaid"
430 }
431 }
432 },
433 {
434 "match": "(title)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
435 "captures": {
436 "1": {
437 "name": "keyword.control.mermaid"
438 },
439 "2": {
440 "name": "string"
441 }
442 }
443 },
444 {
445 "match": "(excludes)\\s+((?:[\\d\\-,\\s]+|monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekends)+)",
446 "captures": {
447 "1": {
448 "name": "keyword.control.mermaid"
449 },
450 "2": {
451 "name": "string"
452 }
453 }
454 },
455 {
456 "match": "^\\s+(todayMarker)\\s+(.*)$",
457 "captures": {
458 "1": {
459 "name": "keyword.control.mermaid"
460 },
461 "2": {
462 "name": "string"
463 }
464 }
465 },
466 {
467 "match": "(section)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
468 "captures": {
469 "1": {
470 "name": "keyword.control.mermaid"
471 },
472 "2": {
473 "name": "string"
474 }
475 }
476 },
477 {
478 "begin": "^\\s(.*)(:)",
479 "beginCaptures": {
480 "1": {
481 "name": "string"
482 },
483 "2": {
484 "name": "keyword.control.mermaid"
485 }
486 },
487 "patterns": [
488 {
489 "match": "(crit|done|active|after)",
490 "name": "entity.name.function.mermaid"
491 },
492 {
493 "match": "\\%%.*",
494 "name": "comment"
495 }
496 ],
497 "end": "$"
498 }
499 ],
500 "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
501 },
502 {
503 "comment": "Git Graph",
504 "begin": "^\\s*(gitGraph)",
505 "beginCaptures": {
506 "1": {
507 "name": "keyword.control.mermaid"
508 }
509 },
510 "patterns": [
511 {
512 "match": "\\%%.*",
513 "name": "comment"
514 },
515 {
516 "comment": "commit",
517 "begin": "\\s*(commit)",
518 "beginCaptures": {
519 "1": {
520 "name": "keyword.control.mermaid"
521 }
522 },
523 "patterns": [
524 {
525 "comment": "(id)(:) (\"id\")",
526 "match": "\\s*(id)(:)\\s?(\"[^\"\\n]*\")",
527 "captures": {
528 "1": {
529 "name": "keyword.control.mermaid"
530 },
531 "2": {
532 "name": "keyword.control.mermaid"
533 },
534 "3": {
535 "name": "string"
536 }
537 }
538 },
539 {
540 "comment": "(type)(:) (COMMIT_TYPE)",
541 "match": "\\s*(type)(:)\\s?(NORMAL|REVERSE|HIGHLIGHT)",
542 "captures": {
543 "1": {
544 "name": "keyword.control.mermaid"
545 },
546 "2": {
547 "name": "keyword.control.mermaid"
548 },
549 "3": {
550 "name": "entity.name.function.mermaid"
551 }
552 }
553 },
554 {
555 "comment": "(tag)(:) (\"tag\")",
556 "match": "\\s*(tag)(:)\\s?(\"[\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*\")",
557 "captures": {
558 "1": {
559 "name": "keyword.control.mermaid"
560 },
561 "2": {
562 "name": "keyword.control.mermaid"
563 },
564 "3": {
565 "name": "string"
566 }
567 }
568 }
569 ],
570 "end": "$"
571 },
572 {
573 "comment": "(checkout) (branch-name)",
574 "match": "\\s*(checkout)\\s*([^\\s\"]*)",
575 "captures": {
576 "1": {
577 "name": "keyword.control.mermaid"
578 },
579 "2": {
580 "name": "variable"
581 }
582 }
583 },
584 {
585 "comment": "(branch) (branch-name) (order)?(:) (number)",
586 "match": "\\s*(branch)\\s*([^\\s\"]*)\\s*(?:(order)(:)\\s?(\\d+))?",
587 "captures": {
588 "1": {
589 "name": "keyword.control.mermaid"
590 },
591 "2": {
592 "name": "variable"
593 },
594 "3": {
595 "name": "keyword.control.mermaid"
596 },
597 "4": {
598 "name": "keyword.control.mermaid"
599 },
600 "5": {
601 "name": "constant.numeric.decimal.mermaid"
602 }
603 }
604 },
605 {
606 "comment": "(merge) (branch-name) (tag: \"tag-name\")?",
607 "match": "\\s*(merge)\\s*([^\\s\"]*)\\s*(?:(tag)(:)\\s?(\"[^\"\\n]*\"))?",
608 "captures": {
609 "1": {
610 "name": "keyword.control.mermaid"
611 },
612 "2": {
613 "name": "variable"
614 },
615 "3": {
616 "name": "keyword.control.mermaid"
617 },
618 "4": {
619 "name": "keyword.control.mermaid"
620 },
621 "5": {
622 "name": "string"
623 }
624 }
625 },
626 {
627 "comment": "(cherry-pick) (id)(:)(\"commit-id\")",
628 "match": "\\s*(cherry-pick)\\s+(id)(:)\\s*(\"[^\"\\n]*\")",
629 "captures": {
630 "1": {
631 "name": "keyword.control.mermaid"
632 },
633 "2": {
634 "name": "keyword.control.mermaid"
635 },
636 "3": {
637 "name": "keyword.control.mermaid"
638 },
639 "4": {
640 "name": "string"
641 }
642 }
643 }
644 ],
645 "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
646 },
647 {
648 "comment": "Graph",
649 "begin": "^\\s*(graph|flowchart)\\s+([\\p{Letter}\\ 0-9]+)",
650 "beginCaptures": {
651 "1": {
652 "name": "keyword.control.mermaid"
653 },
654 "2": {
655 "name": "entity.name.function.mermaid"
656 }
657 },
658 "patterns": [
659 {
660 "match": "\\%%.*",
661 "name": "comment"
662 },
663 {
664 "match": "\\b(subgraph)\\s+([\\p{Letter}\\ 0-9]+)",
665 "captures": {
666 "1": {
667 "name": "keyword.control.mermaid"
668 },
669 "2": {
670 "name": "entity.name.function.mermaid"
671 }
672 },
673 "name": "meta.function.mermaid"
674 },
675 {
676 "match": "\\b(end|RB|BT|RL|TD|LR)\\b",
677 "name": "keyword.control.mermaid"
678 },
679 {
680 "comment": "(Entity)(Edge/Shape)(Text)(Edge/Shape)",
681 "begin": "(\\b(?:(?!--|==)[-\\w])+\\b\\s*)(\\(\\[|\\[\\[|\\[\\(|\\[|\\(+|\\>|\\{|\\(\\()",
682 "beginCaptures": {
683 "1": {
684 "name": "variable"
685 },
686 "2": {
687 "name": "keyword.control.mermaid"
688 },
689 "3": {
690 "name": "string"
691 }
692 },
693 "patterns": [
694 {
695 "comment": "(\"multi-line text\")",
696 "begin": "\\s*(\")",
697 "beginCaptures": {
698 "1": {
699 "name": "string"
700 }
701 },
702 "patterns": [
703 {
704 "comment": "capture inner text between quotes",
705 "begin": "([^\"]*)",
706 "beginCaptures": {
707 "1": {
708 "name": "string"
709 }
710 },
711 "patterns": [
712 {
713 "match": "([^\"]*)",
714 "captures": {
715 "1": {
716 "name": "comment"
717 }
718 }
719 }
720 ],
721 "end": "(?=\")"
722 }
723 ],
724 "end": "(\")",
725 "endCaptures": {
726 "1": {
727 "name": "string"
728 }
729 }
730 },
731 {
732 "comment": "(single line text)",
733 "match": "\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)",
734 "captures": {
735 "1": {
736 "name": "string"
737 }
738 }
739 }
740 ],
741 "end": "(\\]\\)|\\]\\]|\\)\\]|\\]|\\)+|\\}|\\)\\))",
742 "endCaptures": {
743 "1": {
744 "name": "keyword.control.mermaid"
745 }
746 }
747 },
748 {
749 "comment": "(Graph Link)(\"Multiline text\")(Graph Link)",
750 "begin": "\\s*((?:-{2,5}|={2,5})[xo>]?\\|)",
751 "beginCaptures": {
752 "1": {
753 "name": "keyword.control.mermaid"
754 }
755 },
756 "patterns": [
757 {
758 "comment": "(\"multi-line text\")",
759 "begin": "\\s*(\")",
760 "beginCaptures": {
761 "1": {
762 "name": "string"
763 }
764 },
765 "patterns": [
766 {
767 "comment": "capture inner text between quotes",
768 "begin": "([^\"]*)",
769 "beginCaptures": {
770 "1": {
771 "name": "string"
772 }
773 },
774 "patterns": [
775 {
776 "match": "([^\"]*)",
777 "captures": {
778 "1": {
779 "name": "comment"
780 }
781 }
782 }
783 ],
784 "end": "(?=\")"
785 }
786 ],
787 "end": "(\")",
788 "endCaptures": {
789 "1": {
790 "name": "string"
791 }
792 }
793 },
794 {
795 "comment": "(single line text)",
796 "match": "\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)",
797 "captures": {
798 "1": {
799 "name": "string"
800 }
801 }
802 }
803 ],
804 "end": "(\\|)",
805 "endCaptures": {
806 "1": {
807 "name": "keyword.control.mermaid"
808 }
809 }
810 },
811 {
812 "comment": "(Graph Link Start Arrow)(Text)(Graph Link End Arrow)",
813 "match": "\\s*([xo<]?(?:-{2,5}|={2,5}|-\\.{1,3}|-\\.))((?:(?!--|==)[\\w\\s*+%=\\\\/:\\.\\-'`,\"&^#$!?])*)((?:-{2,5}|={2,5}|\\.{1,3}-|\\.-)[xo>]?)",
814 "captures": {
815 "1": {
816 "name": "keyword.control.mermaid"
817 },
818 "2": {
819 "name": "string"
820 },
821 "3": {
822 "name": "keyword.control.mermaid"
823 }
824 }
825 },
826 {
827 "comment": "(Graph Link)",
828 "match": "\\s*([ox<]?(?:-.{1,3}-|-{1,3}|={1,3})[ox>]?)",
829 "captures": {
830 "1": {
831 "name": "keyword.control.mermaid"
832 }
833 }
834 },
835 {
836 "comment": "Entity",
837 "match": "(\\b(?:(?!--|==)[-\\w])+\\b\\s*)",
838 "name": "variable"
839 },
840 {
841 "comment": "(Class)(Node(s))(ClassName)",
842 "match": "\\s*(class)\\s+(\\b[-,\\w]+)\\s+(\\b\\w+\\b)",
843 "captures": {
844 "1": {
845 "name": "keyword.control.mermaid"
846 },
847 "2": {
848 "name": "variable"
849 },
850 "3": {
851 "name": "string"
852 }
853 }
854 },
855 {
856 "comment": "(ClassDef)(ClassName)(Styles)",
857 "match": "\\s*(classDef)\\s+(\\b\\w+\\b)\\s+(\\b[-,:;#\\w]+)",
858 "captures": {
859 "1": {
860 "name": "keyword.control.mermaid"
861 },
862 "2": {
863 "name": "variable"
864 },
865 "3": {
866 "name": "string"
867 }
868 }
869 },
870 {
871 "comment": "(Click)(Entity)(Link)?(Tooltip)",
872 "match": "\\s*(click)\\s+(\\b[-\\w]+\\b\\s*)(\\b\\w+\\b)?\\s(\"*.*\")",
873 "captures": {
874 "1": {
875 "name": "keyword.control.mermaid"
876 },
877 "2": {
878 "name": "variable"
879 },
880 "3": {
881 "name": "variable"
882 },
883 "4": {
884 "name": "string"
885 }
886 }
887 }
888 ],
889 "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
890 },
891 {
892 "comment": "Pie Chart",
893 "begin": "^\\s*(pie)",
894 "beginCaptures": {
895 "1": {
896 "name": "keyword.control.mermaid"
897 }
898 },
899 "patterns": [
900 {
901 "match": "\\%%.*",
902 "name": "comment"
903 },
904 {
905 "match": "(title)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
906 "captures": {
907 "1": {
908 "name": "keyword.control.mermaid"
909 },
910 "2": {
911 "name": "string"
912 }
913 }
914 },
915 {
916 "begin": "\\s(.*)(:)",
917 "beginCaptures": {
918 "1": {
919 "name": "string"
920 },
921 "2": {
922 "name": "keyword.control.mermaid"
923 }
924 },
925 "patterns": [
926 {
927 "match": "\\%%.*",
928 "name": "comment"
929 }
930 ],
931 "end": "$"
932 }
933 ],
934 "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
935 },
936 {
937 "comment": "Sequence Diagram",
938 "begin": "^\\s*(sequenceDiagram)",
939 "beginCaptures": {
940 "1": {
941 "name": "keyword.control.mermaid"
942 }
943 },
944 "patterns": [
945 {
946 "match": "(\\%%|#).*",
947 "name": "comment"
948 },
949 {
950 "comment": "(title)(title text)",
951 "match": "(title)\\s*(:)?\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!:*+=<>\\'\\\\\\-\\w\\s]*)",
952 "captures": {
953 "1": {
954 "name": "keyword.control.mermaid"
955 },
956 "2": {
957 "name": "keyword.control.mermaid"
958 },
959 "3": {
960 "name": "string"
961 }
962 }
963 },
964 {
965 "comment": "(participant)(Actor)(as)?(Label)?",
966 "match": "\\s*(participant|actor)\\s+((?:(?! as )[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s])+)\\s*(as)?\\s([\"\\(\\)$&%\\^/#.,?!*=<>\\'\\\\\\w\\s]+)?",
967 "captures": {
968 "1": {
969 "name": "keyword.control.mermaid"
970 },
971 "2": {
972 "name": "variable"
973 },
974 "3": {
975 "name": "keyword.control.mermaid"
976 },
977 "4": {
978 "name": "string"
979 }
980 }
981 },
982 {
983 "comment": "(activate/deactivate)(Actor)",
984 "match": "\\s*((?:de)?activate)\\s+(\\b[\"()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?\\s*)",
985 "captures": {
986 "1": {
987 "name": "keyword.control.mermaid"
988 },
989 "2": {
990 "name": "variable"
991 }
992 }
993 },
994 {
995 "comment": "(Note)(direction)(Actor)(,)?(Actor)?(:)(Message)",
996 "match": "\\s*(Note)\\s+((?:left|right)\\sof|over)\\s+(\\b[\"()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?\\s*)(,)?(\\b[\"()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?\\s*)?(:)(?:\\s+([^;#]*))?",
997 "captures": {
998 "1": {
999 "name": "keyword.control.mermaid"
1000 },
1001 "2": {
1002 "name": "entity.name.function.mermaid"
1003 },
1004 "3": {
1005 "name": "variable"
1006 },
1007 "4": {
1008 "name": "keyword.control.mermaid"
1009 },
1010 "5": {
1011 "name": "variable"
1012 },
1013 "6": {
1014 "name": "keyword.control.mermaid"
1015 },
1016 "7": {
1017 "name": "string"
1018 }
1019 }
1020 },
1021 {
1022 "comment": "(loop)(loop text)",
1023 "match": "\\s*(loop)(?:\\s+([^;#]*))?",
1024 "captures": {
1025 "1": {
1026 "name": "keyword.control.mermaid"
1027 },
1028 "2": {
1029 "name": "string"
1030 }
1031 }
1032 },
1033 {
1034 "comment": "(end)",
1035 "match": "\\s*(end)",
1036 "captures": {
1037 "1": {
1038 "name": "keyword.control.mermaid"
1039 }
1040 }
1041 },
1042 {
1043 "comment": "(alt/else/option/par/and/autonumber/critical/opt)(text)",
1044 "match": "\\s*(alt|else|option|par|and|rect|autonumber|critical|opt)(?:\\s+([^#;]*))?",
1045 "captures": {
1046 "1": {
1047 "name": "keyword.control.mermaid"
1048 },
1049 "2": {
1050 "name": "string"
1051 }
1052 }
1053 },
1054 {
1055 "comment": "(Actor)(Arrow)(Actor)(:)(Message)",
1056 "match": "\\s*(\\b[\"()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?)\\s*(-?-(?:\\>|x|\\))\\>?[+-]?)\\s*([\"()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?)\\s*(:)\\s*([^;#]*)",
1057 "captures": {
1058 "1": {
1059 "name": "variable"
1060 },
1061 "2": {
1062 "name": "keyword.control.mermaid"
1063 },
1064 "3": {
1065 "name": "variable"
1066 },
1067 "4": {
1068 "name": "keyword.control.mermaid"
1069 },
1070 "5": {
1071 "name": "string"
1072 }
1073 }
1074 }
1075 ],
1076 "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
1077 },
1078 {
1079 "comment": "State Diagram",
1080 "begin": "^\\s*(stateDiagram(?:-v2)?)",
1081 "beginCaptures": {
1082 "1": {
1083 "name": "keyword.control.mermaid"
1084 }
1085 },
1086 "patterns": [
1087 {
1088 "match": "\\%%.*",
1089 "name": "comment"
1090 },
1091 {
1092 "comment": "}",
1093 "match": "\\s+(})\\s+",
1094 "captures": {
1095 "1": {
1096 "name": "keyword.control.mermaid"
1097 }
1098 }
1099 },
1100 {
1101 "comment": "--",
1102 "match": "\\s+(--)\\s+",
1103 "captures": {
1104 "1": {
1105 "name": "keyword.control.mermaid"
1106 }
1107 }
1108 },
1109 {
1110 "comment": "(state)",
1111 "match": "^\\s*([\\w-]+)$",
1112 "name": "variable"
1113 },
1114 {
1115 "comment": "(state) : (description)",
1116 "match": "([\\w-]+)\\s+(:)\\s+(\\s*[-\\w\\s]+\\b)",
1117 "captures": {
1118 "1": {
1119 "name": "variable"
1120 },
1121 "2": {
1122 "name": "keyword.control.mermaid"
1123 },
1124 "3": {
1125 "name": "string"
1126 }
1127 }
1128 },
1129 {
1130 "comment": "state",
1131 "begin": "(state)",
1132 "beginCaptures": {
1133 "1": {
1134 "name": "keyword.control.mermaid"
1135 }
1136 },
1137 "patterns": [
1138 {
1139 "comment": "\"(description)\" as (state)",
1140 "match": "\\s+(\"[-\\w\\s]+\\b\")\\s+(as)\\s+([\\w-]+)",
1141 "captures": {
1142 "1": {
1143 "name": "string"
1144 },
1145 "2": {
1146 "name": "keyword.control.mermaid"
1147 },
1148 "3": {
1149 "name": "variable"
1150 }
1151 }
1152 },
1153 {
1154 "comment": "(state name) {",
1155 "match": "\\s+([\\w-]+)\\s+({)",
1156 "captures": {
1157 "1": {
1158 "name": "variable"
1159 },
1160 "2": {
1161 "name": "keyword.control.mermaid"
1162 }
1163 }
1164 },
1165 {
1166 "comment": "(state name) <<fork|join>>",
1167 "match": "\\s+([\\w-]+)\\s+(<<(?:fork|join)>>)",
1168 "captures": {
1169 "1": {
1170 "name": "variable"
1171 },
1172 "2": {
1173 "name": "keyword.control.mermaid"
1174 }
1175 }
1176 }
1177 ],
1178 "end": "$"
1179 },
1180 {
1181 "comment": "(state) -->",
1182 "begin": "([\\w-]+)\\s+(-->)",
1183 "beginCaptures": {
1184 "1": {
1185 "name": "variable"
1186 },
1187 "2": {
1188 "name": "keyword.control.mermaid"
1189 }
1190 },
1191 "patterns": [
1192 {
1193 "comment": "(state) (:)? (transition text)?",
1194 "match": "\\s+([\\w-]+)\\s*(:)?\\s*([^\\n:]+)?",
1195 "captures": {
1196 "1": {
1197 "name": "variable"
1198 },
1199 "2": {
1200 "name": "keyword.control.mermaid"
1201 },
1202 "3": {
1203 "name": "string"
1204 }
1205 }
1206 },
1207 {
1208 "comment": "[*] (:)? (transition text)?",
1209 "match": "(\\[\\*\\])\\s*(:)?\\s*([^\\n:]+)?",
1210 "captures": {
1211 "1": {
1212 "name": "keyword.control.mermaid"
1213 },
1214 "2": {
1215 "name": "keyword.control.mermaid"
1216 },
1217 "3": {
1218 "name": "string"
1219 }
1220 }
1221 }
1222 ],
1223 "end": "$"
1224 },
1225 {
1226 "comment": "[*] --> (state) (:)? (transition text)?",
1227 "match": "(\\[\\*\\])\\s+(-->)\\s+([\\w-]+)\\s*(:)?\\s*([^\\n:]+)?",
1228 "captures": {
1229 "1": {
1230 "name": "keyword.control.mermaid"
1231 },
1232 "2": {
1233 "name": "keyword.control.mermaid"
1234 },
1235 "3": {
1236 "name": "variable"
1237 },
1238 "4": {
1239 "name": "keyword.control.mermaid"
1240 },
1241 "5": {
1242 "name": "string"
1243 }
1244 }
1245 },
1246 {
1247 "comment": "note left|right of (state name)",
1248 "match": "(note (?:left|right) of)\\s+([\\w-]+)\\s+(:)\\s*([^\\n:]+)",
1249 "captures": {
1250 "1": {
1251 "name": "keyword.control.mermaid"
1252 },
1253 "2": {
1254 "name": "variable"
1255 },
1256 "3": {
1257 "name": "keyword.control.mermaid"
1258 },
1259 "4": {
1260 "name": "string"
1261 }
1262 }
1263 },
1264 {
1265 "comment": "note left|right of (state name) (note text) end note",
1266 "begin": "(note (?:left|right) of)\\s+([\\w-]+)(.|\\n)",
1267 "beginCaptures": {
1268 "1": {
1269 "name": "keyword.control.mermaid"
1270 },
1271 "2": {
1272 "name": "variable"
1273 }
1274 },
1275 "contentName": "string",
1276 "end": "(end note)",
1277 "endCaptures": {
1278 "1": {
1279 "name": "keyword.control.mermaid"
1280 }
1281 }
1282 }
1283 ],
1284 "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
1285 },
1286 {
1287 "comment": "User Journey",
1288 "begin": "^\\s*(journey)",
1289 "beginCaptures": {
1290 "1": {
1291 "name": "keyword.control.mermaid"
1292 }
1293 },
1294 "patterns": [
1295 {
1296 "match": "\\%%.*",
1297 "name": "comment"
1298 },
1299 {
1300 "match": "(title|section)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
1301 "captures": {
1302 "1": {
1303 "name": "keyword.control.mermaid"
1304 },
1305 "2": {
1306 "name": "string"
1307 }
1308 }
1309 },
1310 {
1311 "begin": "\\s*([\"\\(\\)$&%\\^/.,?!*+=<>\\'\\\\\\-\\w\\s]*)\\s*(:)\\s*(\\d+)\\s*(:)",
1312 "beginCaptures": {
1313 "1": {
1314 "name": "string"
1315 },
1316 "2": {
1317 "name": "keyword.control.mermaid"
1318 },
1319 "3": {
1320 "name": "constant.numeric.decimal.mermaid"
1321 },
1322 "4": {
1323 "name": "keyword.control.mermaid"
1324 }
1325 },
1326 "patterns": [
1327 {
1328 "comment": "(taskName)",
1329 "match": "\\s*,?\\s*([^,#\\n]+)",
1330 "captures": {
1331 "1": {
1332 "name": "variable"
1333 }
1334 }
1335 }
1336 ],
1337 "end": "$"
1338 }
1339 ],
1340 "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
1341 }
1342 ]
1343 }
1344 },
1345 "scopeName": "source.mermaid",
1346 "name": "mermaid"
1347 }
1348