PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.27.4
Code Block Pro – Beautiful Syntax Highlighting v1.27.4
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 / groovy.tmLanguage.json

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

1,384 lines 35.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "information_for_contributors": [
3 "This file has been converted from https://github.com/textmate/groovy.tmbundle/blob/master/Syntaxes/Groovy.tmLanguage",
4 "If you want to provide a fix or improvement, please create a pull request against the original repository.",
5 "Once accepted there, we are happy to receive an update request."
6 ],
7 "version": "https://github.com/textmate/groovy.tmbundle/commit/85d8f7c97ae473ccb9473f6c8d27e4ec957f4be1",
8 "name": "groovy",
9 "scopeName": "source.groovy",
10 "patterns": [
11 {
12 "captures": {
13 "1": {
14 "name": "punctuation.definition.comment.groovy"
15 }
16 },
17 "match": "^(#!).+$\\n",
18 "name": "comment.line.hashbang.groovy"
19 },
20 {
21 "captures": {
22 "1": {
23 "name": "keyword.other.package.groovy"
24 },
25 "2": {
26 "name": "storage.modifier.package.groovy"
27 },
28 "3": {
29 "name": "punctuation.terminator.groovy"
30 }
31 },
32 "match": "^\\s*(package)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?",
33 "name": "meta.package.groovy"
34 },
35 {
36 "begin": "(import static)\\b\\s*",
37 "beginCaptures": {
38 "1": {
39 "name": "keyword.other.import.static.groovy"
40 }
41 },
42 "captures": {
43 "1": {
44 "name": "keyword.other.import.groovy"
45 },
46 "2": {
47 "name": "storage.modifier.import.groovy"
48 },
49 "3": {
50 "name": "punctuation.terminator.groovy"
51 }
52 },
53 "contentName": "storage.modifier.import.groovy",
54 "end": "\\s*(?:$|(?=%>)(;))",
55 "endCaptures": {
56 "1": {
57 "name": "punctuation.terminator.groovy"
58 }
59 },
60 "name": "meta.import.groovy",
61 "patterns": [
62 {
63 "match": "\\.",
64 "name": "punctuation.separator.groovy"
65 },
66 {
67 "match": "\\s",
68 "name": "invalid.illegal.character_not_allowed_here.groovy"
69 }
70 ]
71 },
72 {
73 "begin": "(import)\\b\\s*",
74 "beginCaptures": {
75 "1": {
76 "name": "keyword.other.import.groovy"
77 }
78 },
79 "captures": {
80 "1": {
81 "name": "keyword.other.import.groovy"
82 },
83 "2": {
84 "name": "storage.modifier.import.groovy"
85 },
86 "3": {
87 "name": "punctuation.terminator.groovy"
88 }
89 },
90 "contentName": "storage.modifier.import.groovy",
91 "end": "\\s*(?:$|(?=%>)|(;))",
92 "endCaptures": {
93 "1": {
94 "name": "punctuation.terminator.groovy"
95 }
96 },
97 "name": "meta.import.groovy",
98 "patterns": [
99 {
100 "match": "\\.",
101 "name": "punctuation.separator.groovy"
102 },
103 {
104 "match": "\\s",
105 "name": "invalid.illegal.character_not_allowed_here.groovy"
106 }
107 ]
108 },
109 {
110 "captures": {
111 "1": {
112 "name": "keyword.other.import.groovy"
113 },
114 "2": {
115 "name": "keyword.other.import.static.groovy"
116 },
117 "3": {
118 "name": "storage.modifier.import.groovy"
119 },
120 "4": {
121 "name": "punctuation.terminator.groovy"
122 }
123 },
124 "match": "^\\s*(import)(?:\\s+(static)\\s+)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?",
125 "name": "meta.import.groovy"
126 },
127 {
128 "include": "#groovy"
129 }
130 ],
131 "repository": {
132 "annotations": {
133 "patterns": [
134 {
135 "begin": "(?<!\\.)(@[^ (]+)(\\()",
136 "beginCaptures": {
137 "1": {
138 "name": "storage.type.annotation.groovy"
139 },
140 "2": {
141 "name": "punctuation.definition.annotation-arguments.begin.groovy"
142 }
143 },
144 "end": "(\\))",
145 "endCaptures": {
146 "1": {
147 "name": "punctuation.definition.annotation-arguments.end.groovy"
148 }
149 },
150 "name": "meta.declaration.annotation.groovy",
151 "patterns": [
152 {
153 "captures": {
154 "1": {
155 "name": "constant.other.key.groovy"
156 },
157 "2": {
158 "name": "keyword.operator.assignment.groovy"
159 }
160 },
161 "match": "(\\w*)\\s*(=)"
162 },
163 {
164 "include": "#values"
165 },
166 {
167 "match": ",",
168 "name": "punctuation.definition.seperator.groovy"
169 }
170 ]
171 },
172 {
173 "match": "(?<!\\.)@\\S+",
174 "name": "storage.type.annotation.groovy"
175 }
176 ]
177 },
178 "anonymous-classes-and-new": {
179 "begin": "\\bnew\\b",
180 "beginCaptures": {
181 "0": {
182 "name": "keyword.control.new.groovy"
183 }
184 },
185 "end": "(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=[;])|$",
186 "patterns": [
187 {
188 "begin": "(\\w+)\\s*(?=\\[)",
189 "beginCaptures": {
190 "1": {
191 "name": "storage.type.groovy"
192 }
193 },
194 "end": "}|(?=\\s*(?:,|;|\\)))|$",
195 "patterns": [
196 {
197 "begin": "\\[",
198 "end": "\\]",
199 "patterns": [
200 {
201 "include": "#groovy"
202 }
203 ]
204 },
205 {
206 "begin": "{",
207 "end": "(?=})",
208 "patterns": [
209 {
210 "include": "#groovy"
211 }
212 ]
213 }
214 ]
215 },
216 {
217 "begin": "(?=\\w.*\\(?)",
218 "end": "(?<=\\))|$",
219 "patterns": [
220 {
221 "include": "#object-types"
222 },
223 {
224 "begin": "\\(",
225 "beginCaptures": {
226 "1": {
227 "name": "storage.type.groovy"
228 }
229 },
230 "end": "\\)",
231 "patterns": [
232 {
233 "include": "#groovy"
234 }
235 ]
236 }
237 ]
238 },
239 {
240 "begin": "{",
241 "end": "}",
242 "name": "meta.inner-class.groovy",
243 "patterns": [
244 {
245 "include": "#class-body"
246 }
247 ]
248 }
249 ]
250 },
251 "braces": {
252 "begin": "\\{",
253 "end": "\\}",
254 "patterns": [
255 {
256 "include": "#groovy-code"
257 }
258 ]
259 },
260 "class": {
261 "begin": "(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum)\\s+\\w+)",
262 "end": "}",
263 "endCaptures": {
264 "0": {
265 "name": "punctuation.section.class.end.groovy"
266 }
267 },
268 "name": "meta.definition.class.groovy",
269 "patterns": [
270 {
271 "include": "#storage-modifiers"
272 },
273 {
274 "include": "#comments"
275 },
276 {
277 "captures": {
278 "1": {
279 "name": "storage.modifier.groovy"
280 },
281 "2": {
282 "name": "entity.name.type.class.groovy"
283 }
284 },
285 "match": "(class|(?:@)?interface|enum)\\s+(\\w+)",
286 "name": "meta.class.identifier.groovy"
287 },
288 {
289 "begin": "extends",
290 "beginCaptures": {
291 "0": {
292 "name": "storage.modifier.extends.groovy"
293 }
294 },
295 "end": "(?={|implements)",
296 "name": "meta.definition.class.inherited.classes.groovy",
297 "patterns": [
298 {
299 "include": "#object-types-inherited"
300 },
301 {
302 "include": "#comments"
303 }
304 ]
305 },
306 {
307 "begin": "(implements)\\s",
308 "beginCaptures": {
309 "1": {
310 "name": "storage.modifier.implements.groovy"
311 }
312 },
313 "end": "(?=\\s*extends|\\{)",
314 "name": "meta.definition.class.implemented.interfaces.groovy",
315 "patterns": [
316 {
317 "include": "#object-types-inherited"
318 },
319 {
320 "include": "#comments"
321 }
322 ]
323 },
324 {
325 "begin": "{",
326 "end": "(?=})",
327 "name": "meta.class.body.groovy",
328 "patterns": [
329 {
330 "include": "#class-body"
331 }
332 ]
333 }
334 ]
335 },
336 "class-body": {
337 "patterns": [
338 {
339 "include": "#enum-values"
340 },
341 {
342 "include": "#constructors"
343 },
344 {
345 "include": "#groovy"
346 }
347 ]
348 },
349 "closures": {
350 "begin": "\\{(?=.*?->)",
351 "end": "\\}",
352 "patterns": [
353 {
354 "begin": "(?<=\\{)(?=[^\\}]*?->)",
355 "end": "->",
356 "endCaptures": {
357 "0": {
358 "name": "keyword.operator.groovy"
359 }
360 },
361 "patterns": [
362 {
363 "begin": "(?!->)",
364 "end": "(?=->)",
365 "name": "meta.closure.parameters.groovy",
366 "patterns": [
367 {
368 "begin": "(?!,|->)",
369 "end": "(?=,|->)",
370 "name": "meta.closure.parameter.groovy",
371 "patterns": [
372 {
373 "begin": "=",
374 "beginCaptures": {
375 "0": {
376 "name": "keyword.operator.assignment.groovy"
377 }
378 },
379 "end": "(?=,|->)",
380 "name": "meta.parameter.default.groovy",
381 "patterns": [
382 {
383 "include": "#groovy-code"
384 }
385 ]
386 },
387 {
388 "include": "#parameters"
389 }
390 ]
391 }
392 ]
393 }
394 ]
395 },
396 {
397 "begin": "(?=[^}])",
398 "end": "(?=\\})",
399 "patterns": [
400 {
401 "include": "#groovy-code"
402 }
403 ]
404 }
405 ]
406 },
407 "comment-block": {
408 "begin": "/\\*",
409 "captures": {
410 "0": {
411 "name": "punctuation.definition.comment.groovy"
412 }
413 },
414 "end": "\\*/",
415 "name": "comment.block.groovy"
416 },
417 "comments": {
418 "patterns": [
419 {
420 "captures": {
421 "0": {
422 "name": "punctuation.definition.comment.groovy"
423 }
424 },
425 "match": "/\\*\\*/",
426 "name": "comment.block.empty.groovy"
427 },
428 {
429 "include": "text.html.javadoc"
430 },
431 {
432 "include": "#comment-block"
433 },
434 {
435 "captures": {
436 "1": {
437 "name": "punctuation.definition.comment.groovy"
438 }
439 },
440 "match": "(//).*$\\n?",
441 "name": "comment.line.double-slash.groovy"
442 }
443 ]
444 },
445 "constants": {
446 "patterns": [
447 {
448 "match": "\\b([A-Z][A-Z0-9_]+)\\b",
449 "name": "constant.other.groovy"
450 },
451 {
452 "match": "\\b(true|false|null)\\b",
453 "name": "constant.language.groovy"
454 }
455 ]
456 },
457 "constructors": {
458 "applyEndPatternLast": 1,
459 "begin": "(?<=;|^)(?=\\s*(?:(?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\\s+)*[A-Z]\\w*\\()",
460 "end": "}",
461 "patterns": [
462 {
463 "include": "#method-content"
464 }
465 ]
466 },
467 "enum-values": {
468 "patterns": [
469 {
470 "begin": "(?<=;|^)\\s*\\b([A-Z0-9_]+)(?=\\s*(?:,|;|}|\\(|$))",
471 "beginCaptures": {
472 "1": {
473 "name": "constant.enum.name.groovy"
474 }
475 },
476 "end": ",|;|(?=})|^(?!\\s*\\w+\\s*(?:,|$))",
477 "patterns": [
478 {
479 "begin": "\\(",
480 "end": "\\)",
481 "name": "meta.enum.value.groovy",
482 "patterns": [
483 {
484 "match": ",",
485 "name": "punctuation.definition.seperator.parameter.groovy"
486 },
487 {
488 "include": "#groovy-code"
489 }
490 ]
491 }
492 ]
493 }
494 ]
495 },
496 "groovy": {
497 "patterns": [
498 {
499 "include": "#comments"
500 },
501 {
502 "include": "#class"
503 },
504 {
505 "include": "#variables"
506 },
507 {
508 "include": "#methods"
509 },
510 {
511 "include": "#annotations"
512 },
513 {
514 "include": "#groovy-code"
515 }
516 ]
517 },
518 "groovy-code": {
519 "patterns": [
520 {
521 "include": "#groovy-code-minus-map-keys"
522 },
523 {
524 "include": "#map-keys"
525 }
526 ]
527 },
528 "groovy-code-minus-map-keys": {
529 "comment": "In some situations, maps can't be declared without enclosing []'s, \n\t\t\t\ttherefore we create a collection of everything but that",
530 "patterns": [
531 {
532 "include": "#comments"
533 },
534 {
535 "include": "#annotations"
536 },
537 {
538 "include": "#support-functions"
539 },
540 {
541 "include": "#keyword-language"
542 },
543 {
544 "include": "#values"
545 },
546 {
547 "include": "#anonymous-classes-and-new"
548 },
549 {
550 "include": "#keyword-operator"
551 },
552 {
553 "include": "#types"
554 },
555 {
556 "include": "#storage-modifiers"
557 },
558 {
559 "include": "#parens"
560 },
561 {
562 "include": "#closures"
563 },
564 {
565 "include": "#braces"
566 }
567 ]
568 },
569 "keyword": {
570 "patterns": [
571 {
572 "include": "#keyword-operator"
573 },
574 {
575 "include": "#keyword-language"
576 }
577 ]
578 },
579 "keyword-language": {
580 "patterns": [
581 {
582 "match": "\\b(try|catch|finally|throw)\\b",
583 "name": "keyword.control.exception.groovy"
584 },
585 {
586 "match": "\\b((?<!\\.)(?:return|break|continue|default|do|while|for|switch|if|else))\\b",
587 "name": "keyword.control.groovy"
588 },
589 {
590 "begin": "\\bcase\\b",
591 "beginCaptures": {
592 "0": {
593 "name": "keyword.control.groovy"
594 }
595 },
596 "end": ":",
597 "endCaptures": {
598 "0": {
599 "name": "punctuation.definition.case-terminator.groovy"
600 }
601 },
602 "name": "meta.case.groovy",
603 "patterns": [
604 {
605 "include": "#groovy-code-minus-map-keys"
606 }
607 ]
608 },
609 {
610 "begin": "\\b(assert)\\s",
611 "beginCaptures": {
612 "1": {
613 "name": "keyword.control.assert.groovy"
614 }
615 },
616 "end": "$|;|}",
617 "name": "meta.declaration.assertion.groovy",
618 "patterns": [
619 {
620 "match": ":",
621 "name": "keyword.operator.assert.expression-seperator.groovy"
622 },
623 {
624 "include": "#groovy-code-minus-map-keys"
625 }
626 ]
627 },
628 {
629 "match": "\\b(throws)\\b",
630 "name": "keyword.other.throws.groovy"
631 }
632 ]
633 },
634 "keyword-operator": {
635 "patterns": [
636 {
637 "match": "\\b(as)\\b",
638 "name": "keyword.operator.as.groovy"
639 },
640 {
641 "match": "\\b(in)\\b",
642 "name": "keyword.operator.in.groovy"
643 },
644 {
645 "match": "\\?\\:",
646 "name": "keyword.operator.elvis.groovy"
647 },
648 {
649 "match": "\\*\\:",
650 "name": "keyword.operator.spreadmap.groovy"
651 },
652 {
653 "match": "\\.\\.",
654 "name": "keyword.operator.range.groovy"
655 },
656 {
657 "match": "\\->",
658 "name": "keyword.operator.arrow.groovy"
659 },
660 {
661 "match": "<<",
662 "name": "keyword.operator.leftshift.groovy"
663 },
664 {
665 "match": "(?<=\\S)\\.(?=\\S)",
666 "name": "keyword.operator.navigation.groovy"
667 },
668 {
669 "match": "(?<=\\S)\\?\\.(?=\\S)",
670 "name": "keyword.operator.safe-navigation.groovy"
671 },
672 {
673 "begin": "\\?",
674 "beginCaptures": {
675 "0": {
676 "name": "keyword.operator.ternary.groovy"
677 }
678 },
679 "end": "(?=$|\\)|}|])",
680 "name": "meta.evaluation.ternary.groovy",
681 "patterns": [
682 {
683 "match": ":",
684 "name": "keyword.operator.ternary.expression-seperator.groovy"
685 },
686 {
687 "include": "#groovy-code-minus-map-keys"
688 }
689 ]
690 },
691 {
692 "match": "==~",
693 "name": "keyword.operator.match.groovy"
694 },
695 {
696 "match": "=~",
697 "name": "keyword.operator.find.groovy"
698 },
699 {
700 "match": "\\b(instanceof)\\b",
701 "name": "keyword.operator.instanceof.groovy"
702 },
703 {
704 "match": "(===|==|!=|<=|>=|<=>|<>|<|>|<<)",
705 "name": "keyword.operator.comparison.groovy"
706 },
707 {
708 "match": "=",
709 "name": "keyword.operator.assignment.groovy"
710 },
711 {
712 "match": "(\\-\\-|\\+\\+)",
713 "name": "keyword.operator.increment-decrement.groovy"
714 },
715 {
716 "match": "(\\-|\\+|\\*|\\/|%)",
717 "name": "keyword.operator.arithmetic.groovy"
718 },
719 {
720 "match": "(!|&&|\\|\\|)",
721 "name": "keyword.operator.logical.groovy"
722 }
723 ]
724 },
725 "language-variables": {
726 "patterns": [
727 {
728 "match": "\\b(this|super)\\b",
729 "name": "variable.language.groovy"
730 }
731 ]
732 },
733 "map-keys": {
734 "patterns": [
735 {
736 "captures": {
737 "1": {
738 "name": "constant.other.key.groovy"
739 },
740 "2": {
741 "name": "punctuation.definition.seperator.key-value.groovy"
742 }
743 },
744 "match": "(\\w+)\\s*(:)"
745 }
746 ]
747 },
748 "method-call": {
749 "begin": "([\\w$]+)(\\()",
750 "beginCaptures": {
751 "1": {
752 "name": "meta.method.groovy"
753 },
754 "2": {
755 "name": "punctuation.definition.method-parameters.begin.groovy"
756 }
757 },
758 "end": "\\)",
759 "endCaptures": {
760 "0": {
761 "name": "punctuation.definition.method-parameters.end.groovy"
762 }
763 },
764 "name": "meta.method-call.groovy",
765 "patterns": [
766 {
767 "match": ",",
768 "name": "punctuation.definition.seperator.parameter.groovy"
769 },
770 {
771 "include": "#groovy-code"
772 }
773 ]
774 },
775 "method-content": {
776 "patterns": [
777 {
778 "match": "\\s"
779 },
780 {
781 "include": "#annotations"
782 },
783 {
784 "begin": "(?=(?:\\w|<)[^\\(]*\\s+(?:[\\w$]|<)+\\s*\\()",
785 "end": "(?=[\\w$]+\\s*\\()",
786 "name": "meta.method.return-type.java",
787 "patterns": [
788 {
789 "include": "#storage-modifiers"
790 },
791 {
792 "include": "#types"
793 }
794 ]
795 },
796 {
797 "begin": "([\\w$]+)\\s*\\(",
798 "beginCaptures": {
799 "1": {
800 "name": "entity.name.function.java"
801 }
802 },
803 "end": "\\)",
804 "name": "meta.definition.method.signature.java",
805 "patterns": [
806 {
807 "begin": "(?=[^)])",
808 "end": "(?=\\))",
809 "name": "meta.method.parameters.groovy",
810 "patterns": [
811 {
812 "begin": "(?=[^,)])",
813 "end": "(?=,|\\))",
814 "name": "meta.method.parameter.groovy",
815 "patterns": [
816 {
817 "match": ",",
818 "name": "punctuation.definition.separator.groovy"
819 },
820 {
821 "begin": "=",
822 "beginCaptures": {
823 "0": {
824 "name": "keyword.operator.assignment.groovy"
825 }
826 },
827 "end": "(?=,|\\))",
828 "name": "meta.parameter.default.groovy",
829 "patterns": [
830 {
831 "include": "#groovy-code"
832 }
833 ]
834 },
835 {
836 "include": "#parameters"
837 }
838 ]
839 }
840 ]
841 }
842 ]
843 },
844 {
845 "begin": "(?=<)",
846 "end": "(?=\\s)",
847 "name": "meta.method.paramerised-type.groovy",
848 "patterns": [
849 {
850 "begin": "<",
851 "end": ">",
852 "name": "storage.type.parameters.groovy",
853 "patterns": [
854 {
855 "include": "#types"
856 },
857 {
858 "match": ",",
859 "name": "punctuation.definition.seperator.groovy"
860 }
861 ]
862 }
863 ]
864 },
865 {
866 "begin": "throws",
867 "beginCaptures": {
868 "0": {
869 "name": "storage.modifier.groovy"
870 }
871 },
872 "end": "(?={|;)|^(?=\\s*(?:[^{\\s]|$))",
873 "name": "meta.throwables.groovy",
874 "patterns": [
875 {
876 "include": "#object-types"
877 }
878 ]
879 },
880 {
881 "begin": "{",
882 "end": "(?=})",
883 "name": "meta.method.body.java",
884 "patterns": [
885 {
886 "include": "#groovy-code"
887 }
888 ]
889 }
890 ]
891 },
892 "methods": {
893 "applyEndPatternLast": 1,
894 "begin": "(?x:(?<=;|^|{)(?=\\s*\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:\n (?:\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:@?(?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n [\\[\\]]*\n (?:<.*>)?\n ) \n \n )\n \\s+\n ([^=]+\\s+)?\\w+\\s*\\(\n\t\t\t))",
895 "end": "}|(?=[^{])",
896 "name": "meta.definition.method.groovy",
897 "patterns": [
898 {
899 "include": "#method-content"
900 }
901 ]
902 },
903 "nest_curly": {
904 "begin": "\\{",
905 "captures": {
906 "0": {
907 "name": "punctuation.section.scope.groovy"
908 }
909 },
910 "end": "\\}",
911 "patterns": [
912 {
913 "include": "#nest_curly"
914 }
915 ]
916 },
917 "numbers": {
918 "patterns": [
919 {
920 "match": "((0(x|X)[0-9a-fA-F]*)|(\\+|-)?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\b",
921 "name": "constant.numeric.groovy"
922 }
923 ]
924 },
925 "object-types": {
926 "patterns": [
927 {
928 "begin": "\\b((?:[a-z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI]))<",
929 "end": ">|[^\\w\\s,\\?<\\[\\]]",
930 "name": "storage.type.generic.groovy",
931 "patterns": [
932 {
933 "include": "#object-types"
934 },
935 {
936 "begin": "<",
937 "comment": "This is just to support <>'s with no actual type prefix",
938 "end": ">|[^\\w\\s,\\[\\]<]",
939 "name": "storage.type.generic.groovy"
940 }
941 ]
942 },
943 {
944 "begin": "\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)(?=\\[)",
945 "end": "(?=[^\\]\\s])",
946 "name": "storage.type.object.array.groovy",
947 "patterns": [
948 {
949 "begin": "\\[",
950 "end": "\\]",
951 "patterns": [
952 {
953 "include": "#groovy"
954 }
955 ]
956 }
957 ]
958 },
959 {
960 "match": "\\b(?:[a-zA-Z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI])\\b",
961 "name": "storage.type.groovy"
962 }
963 ]
964 },
965 "object-types-inherited": {
966 "patterns": [
967 {
968 "begin": "\\b((?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)<",
969 "end": ">|[^\\w\\s,\\?<\\[\\]]",
970 "name": "entity.other.inherited-class.groovy",
971 "patterns": [
972 {
973 "include": "#object-types-inherited"
974 },
975 {
976 "begin": "<",
977 "comment": "This is just to support <>'s with no actual type prefix",
978 "end": ">|[^\\w\\s,\\[\\]<]",
979 "name": "storage.type.generic.groovy"
980 }
981 ]
982 },
983 {
984 "captures": {
985 "1": {
986 "name": "keyword.operator.dereference.groovy"
987 }
988 },
989 "match": "\\b(?:[a-zA-Z]\\w*(\\.))*[A-Z]+\\w*[a-z]+\\w*\\b",
990 "name": "entity.other.inherited-class.groovy"
991 }
992 ]
993 },
994 "parameters": {
995 "patterns": [
996 {
997 "include": "#annotations"
998 },
999 {
1000 "include": "#storage-modifiers"
1001 },
1002 {
1003 "include": "#types"
1004 },
1005 {
1006 "match": "\\w+",
1007 "name": "variable.parameter.method.groovy"
1008 }
1009 ]
1010 },
1011 "parens": {
1012 "begin": "\\(",
1013 "end": "\\)",
1014 "patterns": [
1015 {
1016 "include": "#groovy-code"
1017 }
1018 ]
1019 },
1020 "primitive-arrays": {
1021 "patterns": [
1022 {
1023 "match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)(\\[\\])*\\b",
1024 "name": "storage.type.primitive.array.groovy"
1025 }
1026 ]
1027 },
1028 "primitive-types": {
1029 "patterns": [
1030 {
1031 "match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)\\b",
1032 "name": "storage.type.primitive.groovy"
1033 }
1034 ]
1035 },
1036 "regexp": {
1037 "patterns": [
1038 {
1039 "begin": "/(?=[^/]+/([^>]|$))",
1040 "beginCaptures": {
1041 "0": {
1042 "name": "punctuation.definition.string.regexp.begin.groovy"
1043 }
1044 },
1045 "end": "/",
1046 "endCaptures": {
1047 "0": {
1048 "name": "punctuation.definition.string.regexp.end.groovy"
1049 }
1050 },
1051 "name": "string.regexp.groovy",
1052 "patterns": [
1053 {
1054 "match": "\\\\.",
1055 "name": "constant.character.escape.groovy"
1056 }
1057 ]
1058 },
1059 {
1060 "begin": "~\"",
1061 "beginCaptures": {
1062 "0": {
1063 "name": "punctuation.definition.string.regexp.begin.groovy"
1064 }
1065 },
1066 "end": "\"",
1067 "endCaptures": {
1068 "0": {
1069 "name": "punctuation.definition.string.regexp.end.groovy"
1070 }
1071 },
1072 "name": "string.regexp.compiled.groovy",
1073 "patterns": [
1074 {
1075 "match": "\\\\.",
1076 "name": "constant.character.escape.groovy"
1077 }
1078 ]
1079 }
1080 ]
1081 },
1082 "storage-modifiers": {
1083 "patterns": [
1084 {
1085 "match": "\\b(private|protected|public)\\b",
1086 "name": "storage.modifier.access-control.groovy"
1087 },
1088 {
1089 "match": "\\b(static)\\b",
1090 "name": "storage.modifier.static.groovy"
1091 },
1092 {
1093 "match": "\\b(final)\\b",
1094 "name": "storage.modifier.final.groovy"
1095 },
1096 {
1097 "match": "\\b(native|synchronized|abstract|threadsafe|transient)\\b",
1098 "name": "storage.modifier.other.groovy"
1099 }
1100 ]
1101 },
1102 "string-quoted-double": {
1103 "begin": "\"",
1104 "beginCaptures": {
1105 "0": {
1106 "name": "punctuation.definition.string.begin.groovy"
1107 }
1108 },
1109 "end": "\"",
1110 "endCaptures": {
1111 "0": {
1112 "name": "punctuation.definition.string.end.groovy"
1113 }
1114 },
1115 "name": "string.quoted.double.groovy",
1116 "patterns": [
1117 {
1118 "include": "#string-quoted-double-contents"
1119 }
1120 ]
1121 },
1122 "string-quoted-double-contents": {
1123 "patterns": [
1124 {
1125 "match": "\\\\.",
1126 "name": "constant.character.escape.groovy"
1127 },
1128 {
1129 "applyEndPatternLast": 1,
1130 "begin": "\\$\\w",
1131 "end": "(?=\\W)",
1132 "name": "variable.other.interpolated.groovy",
1133 "patterns": [
1134 {
1135 "match": "\\w",
1136 "name": "variable.other.interpolated.groovy"
1137 },
1138 {
1139 "match": "\\.",
1140 "name": "keyword.other.dereference.groovy"
1141 }
1142 ]
1143 },
1144 {
1145 "begin": "\\$\\{",
1146 "captures": {
1147 "0": {
1148 "name": "punctuation.section.embedded.groovy"
1149 }
1150 },
1151 "end": "\\}",
1152 "name": "source.groovy.embedded.source",
1153 "patterns": [
1154 {
1155 "include": "#nest_curly"
1156 }
1157 ]
1158 }
1159 ]
1160 },
1161 "string-quoted-double-multiline": {
1162 "begin": "\"\"\"",
1163 "beginCaptures": {
1164 "0": {
1165 "name": "punctuation.definition.string.begin.groovy"
1166 }
1167 },
1168 "end": "\"\"\"",
1169 "endCaptures": {
1170 "0": {
1171 "name": "punctuation.definition.string.end.groovy"
1172 }
1173 },
1174 "name": "string.quoted.double.multiline.groovy",
1175 "patterns": [
1176 {
1177 "include": "#string-quoted-double-contents"
1178 }
1179 ]
1180 },
1181 "string-quoted-single": {
1182 "begin": "'",
1183 "beginCaptures": {
1184 "0": {
1185 "name": "punctuation.definition.string.begin.groovy"
1186 }
1187 },
1188 "end": "'",
1189 "endCaptures": {
1190 "0": {
1191 "name": "punctuation.definition.string.end.groovy"
1192 }
1193 },
1194 "name": "string.quoted.single.groovy",
1195 "patterns": [
1196 {
1197 "include": "#string-quoted-single-contents"
1198 }
1199 ]
1200 },
1201 "string-quoted-single-contents": {
1202 "patterns": [
1203 {
1204 "match": "\\\\.",
1205 "name": "constant.character.escape.groovy"
1206 }
1207 ]
1208 },
1209 "string-quoted-single-multiline": {
1210 "begin": "'''",
1211 "beginCaptures": {
1212 "0": {
1213 "name": "punctuation.definition.string.begin.groovy"
1214 }
1215 },
1216 "end": "'''",
1217 "endCaptures": {
1218 "0": {
1219 "name": "punctuation.definition.string.end.groovy"
1220 }
1221 },
1222 "name": "string.quoted.single.multiline.groovy",
1223 "patterns": [
1224 {
1225 "include": "#string-quoted-single-contents"
1226 }
1227 ]
1228 },
1229 "strings": {
1230 "patterns": [
1231 {
1232 "include": "#string-quoted-double-multiline"
1233 },
1234 {
1235 "include": "#string-quoted-single-multiline"
1236 },
1237 {
1238 "include": "#string-quoted-double"
1239 },
1240 {
1241 "include": "#string-quoted-single"
1242 },
1243 {
1244 "include": "#regexp"
1245 }
1246 ]
1247 },
1248 "structures": {
1249 "begin": "\\[",
1250 "beginCaptures": {
1251 "0": {
1252 "name": "punctuation.definition.structure.begin.groovy"
1253 }
1254 },
1255 "end": "\\]",
1256 "endCaptures": {
1257 "0": {
1258 "name": "punctuation.definition.structure.end.groovy"
1259 }
1260 },
1261 "name": "meta.structure.groovy",
1262 "patterns": [
1263 {
1264 "include": "#groovy-code"
1265 },
1266 {
1267 "match": ",",
1268 "name": "punctuation.definition.separator.groovy"
1269 }
1270 ]
1271 },
1272 "support-functions": {
1273 "patterns": [
1274 {
1275 "match": "(?x)\\b(?:sprintf|print(?:f|ln)?)\\b",
1276 "name": "support.function.print.groovy"
1277 },
1278 {
1279 "match": "(?x)\\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|\n\t\t\t\t\tNull)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|\n\t\t\t\t\tArrayEquals)))\\b",
1280 "name": "support.function.testing.groovy"
1281 }
1282 ]
1283 },
1284 "types": {
1285 "patterns": [
1286 {
1287 "match": "\\b(def)\\b",
1288 "name": "storage.type.def.groovy"
1289 },
1290 {
1291 "include": "#primitive-types"
1292 },
1293 {
1294 "include": "#primitive-arrays"
1295 },
1296 {
1297 "include": "#object-types"
1298 }
1299 ]
1300 },
1301 "values": {
1302 "patterns": [
1303 {
1304 "include": "#language-variables"
1305 },
1306 {
1307 "include": "#strings"
1308 },
1309 {
1310 "include": "#numbers"
1311 },
1312 {
1313 "include": "#constants"
1314 },
1315 {
1316 "include": "#types"
1317 },
1318 {
1319 "include": "#structures"
1320 },
1321 {
1322 "include": "#method-call"
1323 }
1324 ]
1325 },
1326 "variables": {
1327 "applyEndPatternLast": 1,
1328 "patterns": [
1329 {
1330 "begin": "(?x:(?=\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:(?:[a-z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n \\s+\n [\\w\\d_<>\\[\\],\\s]+\n (?:=|$)\n \n \t\t\t))",
1331 "end": ";|$",
1332 "name": "meta.definition.variable.groovy",
1333 "patterns": [
1334 {
1335 "match": "\\s"
1336 },
1337 {
1338 "captures": {
1339 "1": {
1340 "name": "constant.variable.groovy"
1341 }
1342 },
1343 "match": "([A-Z_0-9]+)\\s+(?=\\=)"
1344 },
1345 {
1346 "captures": {
1347 "1": {
1348 "name": "meta.definition.variable.name.groovy"
1349 }
1350 },
1351 "match": "(\\w[^\\s,]*)\\s+(?=\\=)"
1352 },
1353 {
1354 "begin": "=",
1355 "beginCaptures": {
1356 "0": {
1357 "name": "keyword.operator.assignment.groovy"
1358 }
1359 },
1360 "end": "$",
1361 "patterns": [
1362 {
1363 "include": "#groovy-code"
1364 }
1365 ]
1366 },
1367 {
1368 "captures": {
1369 "1": {
1370 "name": "meta.definition.variable.name.groovy"
1371 }
1372 },
1373 "match": "(\\w[^\\s=]*)(?=\\s*($|;))"
1374 },
1375 {
1376 "include": "#groovy-code"
1377 }
1378 ]
1379 }
1380 ]
1381 }
1382 }
1383 }
1384