PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.27.2
Code Block Pro – Beautiful Syntax Highlighting v1.27.2
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 / pug.tmLanguage.json

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

1,039 lines 24.2 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/davidrios/pug-tmbundle/blob/master/Syntaxes/Pug.JSON-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/davidrios/pug-tmbundle/commit/ae1dd60ca4aa4b45617f236d584216cd8d19eecf",
8 "name": "pug",
9 "scopeName": "text.pug",
10 "patterns": [
11 {
12 "match": "^(!!!|doctype)(\\s*[a-zA-Z0-9-_]+)?",
13 "name": "meta.tag.sgml.doctype.html",
14 "comment": "Doctype declaration."
15 },
16 {
17 "begin": "^(\\s*)//-",
18 "end": "^(?!(\\1\\s)|\\s*$)",
19 "name": "comment.unbuffered.block.pug",
20 "comment": "Unbuffered (pug-only) comments."
21 },
22 {
23 "begin": "^(\\s*)//",
24 "end": "^(?!(\\1\\s)|\\s*$)",
25 "name": "string.comment.buffered.block.pug",
26 "comment": "Buffered (html) comments.",
27 "patterns": [
28 {
29 "captures": {
30 "1": {
31 "name": "invalid.illegal.comment.comment.block.pug"
32 }
33 },
34 "match": "^\\s*(//)(?!-)",
35 "name": "string.comment.buffered.block.pug",
36 "comment": "Buffered comments inside buffered comments will generate invalid html."
37 }
38 ]
39 },
40 {
41 "begin": "<!--",
42 "end": "--\\s*>",
43 "name": "comment.unbuffered.block.pug",
44 "patterns": [
45 {
46 "match": "--",
47 "name": "invalid.illegal.comment.comment.block.pug"
48 }
49 ]
50 },
51 {
52 "begin": "^(\\s*)-$",
53 "end": "^(?!(\\1\\s)|\\s*$)",
54 "name": "source.js",
55 "comment": "Unbuffered code block.",
56 "patterns": [
57 {
58 "include": "source.js"
59 }
60 ]
61 },
62 {
63 "begin": "^(\\s*)(script)((\\.$)|(?=[^\\n]*((text|application)/javascript|module).*\\.$))",
64 "beginCaptures": {
65 "2": {
66 "name": "entity.name.tag.pug"
67 }
68 },
69 "end": "^(?!(\\1\\s)|\\s*$)",
70 "name": "meta.tag.other",
71 "comment": "Script tag with JavaScript code.",
72 "patterns": [
73 {
74 "begin": "\\G(?=\\()",
75 "end": "$",
76 "patterns": [
77 {
78 "include": "#tag_attributes"
79 }
80 ]
81 },
82 {
83 "begin": "\\G(?=[.#])",
84 "end": "$",
85 "patterns": [
86 {
87 "include": "#complete_tag"
88 }
89 ]
90 },
91 {
92 "include": "source.js"
93 }
94 ]
95 },
96 {
97 "begin": "^(\\s*)(style)((\\.$)|(?=[.#(].*\\.$))",
98 "beginCaptures": {
99 "2": {
100 "name": "entity.name.tag.pug"
101 }
102 },
103 "end": "^(?!(\\1\\s)|\\s*$)",
104 "name": "meta.tag.other",
105 "comment": "Style tag with CSS code.",
106 "patterns": [
107 {
108 "begin": "\\G(?=\\()",
109 "end": "$",
110 "patterns": [
111 {
112 "include": "#tag_attributes"
113 }
114 ]
115 },
116 {
117 "begin": "\\G(?=[.#])",
118 "end": "$",
119 "patterns": [
120 {
121 "include": "#complete_tag"
122 }
123 ]
124 },
125 {
126 "include": "source.css"
127 }
128 ]
129 },
130 {
131 "begin": "^(\\s*):(sass)(?=\\(|$)",
132 "beginCaptures": {
133 "2": {
134 "name": "constant.language.name.sass.filter.pug"
135 }
136 },
137 "end": "^(?!(\\1\\s)|\\s*$)",
138 "name": "source.sass.filter.pug",
139 "patterns": [
140 {
141 "include": "#tag_attributes"
142 },
143 {
144 "include": "source.sass"
145 }
146 ]
147 },
148 {
149 "begin": "^(\\s*):(scss)(?=\\(|$)",
150 "beginCaptures": {
151 "2": {
152 "name": "constant.language.name.scss.filter.pug"
153 }
154 },
155 "end": "^(?!(\\1\\s)|\\s*$)",
156 "name": "source.css.scss.filter.pug",
157 "patterns": [
158 {
159 "include": "#tag_attributes"
160 },
161 {
162 "include": "source.css.scss"
163 }
164 ]
165 },
166 {
167 "begin": "^(\\s*):(less)(?=\\(|$)",
168 "beginCaptures": {
169 "2": {
170 "name": "constant.language.name.less.filter.pug"
171 }
172 },
173 "end": "^(?!(\\1\\s)|\\s*$)",
174 "name": "source.less.filter.pug",
175 "patterns": [
176 {
177 "include": "#tag_attributes"
178 },
179 {
180 "include": "source.less"
181 }
182 ]
183 },
184 {
185 "begin": "^(\\s*):(stylus)(?=\\(|$)",
186 "beginCaptures": {
187 "2": {
188 "name": "constant.language.name.stylus.filter.pug"
189 }
190 },
191 "end": "^(?!(\\1\\s)|\\s*$)",
192 "patterns": [
193 {
194 "include": "#tag_attributes"
195 },
196 {
197 "include": "source.stylus"
198 }
199 ]
200 },
201 {
202 "begin": "^(\\s*):(coffee(-?script)?)(?=\\(|$)",
203 "beginCaptures": {
204 "2": {
205 "name": "constant.language.name.coffeescript.filter.pug"
206 }
207 },
208 "end": "^(?!(\\1\\s)|\\s*$)",
209 "name": "source.coffeescript.filter.pug",
210 "patterns": [
211 {
212 "include": "#tag_attributes"
213 },
214 {
215 "include": "source.coffee"
216 }
217 ]
218 },
219 {
220 "begin": "^(\\s*):(uglify-js)(?=\\(|$)",
221 "beginCaptures": {
222 "2": {
223 "name": "constant.language.name.js.filter.pug"
224 }
225 },
226 "end": "^(?!(\\1\\s)|\\s*$)",
227 "name": "source.js.filter.pug",
228 "patterns": [
229 {
230 "include": "#tag_attributes"
231 },
232 {
233 "include": "source.js"
234 }
235 ]
236 },
237 {
238 "begin": "^(\\s*)((:(?=.))|(:$))",
239 "beginCaptures": {
240 "4": {
241 "name": "invalid.illegal.empty.generic.filter.pug"
242 }
243 },
244 "end": "^(?!(\\1\\s)|\\s*$)",
245 "comment": "Generic Pug filter.",
246 "patterns": [
247 {
248 "begin": "\\G(?<=:)(?=.)",
249 "end": "$",
250 "name": "name.generic.filter.pug",
251 "patterns": [
252 {
253 "match": "\\G\\(",
254 "name": "invalid.illegal.name.generic.filter.pug"
255 },
256 {
257 "match": "[\\w-]",
258 "name": "constant.language.name.generic.filter.pug"
259 },
260 {
261 "include": "#tag_attributes"
262 },
263 {
264 "match": "\\W",
265 "name": "invalid.illegal.name.generic.filter.pug"
266 }
267 ]
268 }
269 ]
270 },
271 {
272 "begin": "^(\\s*)(?:(?=\\.$)|(?:(?=[\\w.#].*?\\.$)(?=(?:(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*)(?:(?:(?::\\s+)|(?<=\\)))(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*))*)\\.$)(?:(?:(#[\\w-]+)|(\\.[\\w-]+))|((?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))))",
273 "beginCaptures": {
274 "2": {
275 "name": "meta.selector.css entity.other.attribute-name.id.css.pug"
276 },
277 "3": {
278 "name": "meta.selector.css entity.other.attribute-name.class.css.pug"
279 },
280 "4": {
281 "name": "meta.tag.other entity.name.tag.pug"
282 }
283 },
284 "end": "^(?!(\\1\\s)|\\s*$)",
285 "comment": "Generated from dot_block_tag.py",
286 "patterns": [
287 {
288 "match": "\\.$",
289 "name": "storage.type.function.pug.dot-block-dot"
290 },
291 {
292 "include": "#tag_attributes"
293 },
294 {
295 "include": "#complete_tag"
296 },
297 {
298 "begin": "^(?=.)",
299 "end": "$",
300 "name": "text.block.pug",
301 "patterns": [
302 {
303 "include": "#inline_pug"
304 },
305 {
306 "include": "#embedded_html"
307 },
308 {
309 "include": "#html_entity"
310 },
311 {
312 "include": "#interpolated_value"
313 },
314 {
315 "include": "#interpolated_error"
316 }
317 ]
318 }
319 ]
320 },
321 {
322 "begin": "^\\s*",
323 "end": "$",
324 "comment": "All constructs that generally span a single line starting with any number of white-spaces.",
325 "patterns": [
326 {
327 "include": "#inline_pug"
328 },
329 {
330 "include": "#blocks_and_includes"
331 },
332 {
333 "include": "#unbuffered_code"
334 },
335 {
336 "include": "#mixin_definition"
337 },
338 {
339 "include": "#mixin_call"
340 },
341 {
342 "include": "#flow_control"
343 },
344 {
345 "include": "#flow_control_each"
346 },
347 {
348 "include": "#case_conds"
349 },
350 {
351 "begin": "\\|",
352 "end": "$",
353 "name": "text.block.pipe.pug",
354 "comment": "Tag pipe text line.",
355 "patterns": [
356 {
357 "include": "#inline_pug"
358 },
359 {
360 "include": "#embedded_html"
361 },
362 {
363 "include": "#html_entity"
364 },
365 {
366 "include": "#interpolated_value"
367 },
368 {
369 "include": "#interpolated_error"
370 }
371 ]
372 },
373 {
374 "include": "#printed_expression"
375 },
376 {
377 "begin": "\\G(?=(#[^\\{\\w-])|[^\\w.#])",
378 "end": "$",
379 "comment": "Line starting with characters incompatible with tag name/id/class is standalone text.",
380 "patterns": [
381 {
382 "begin": "</?(?=[!#])",
383 "end": ">|$",
384 "patterns": [
385 {
386 "include": "#inline_pug"
387 },
388 {
389 "include": "#interpolated_value"
390 },
391 {
392 "include": "#interpolated_error"
393 }
394 ]
395 },
396 {
397 "include": "#inline_pug"
398 },
399 {
400 "include": "#embedded_html"
401 },
402 {
403 "include": "#html_entity"
404 },
405 {
406 "include": "#interpolated_value"
407 },
408 {
409 "include": "#interpolated_error"
410 }
411 ]
412 },
413 {
414 "include": "#complete_tag"
415 }
416 ]
417 }
418 ],
419 "repository": {
420 "blocks_and_includes": {
421 "captures": {
422 "1": {
423 "name": "storage.type.import.include.pug"
424 },
425 "4": {
426 "name": "variable.control.import.include.pug"
427 }
428 },
429 "match": "(extends|include|yield|append|prepend|block( (append|prepend))?)\\s+(.*)$",
430 "name": "meta.first-class.pug",
431 "comment": "Template blocks and includes."
432 },
433 "unbuffered_code": {
434 "begin": "(-|(([a-zA-Z0-9_]+)\\s+=))",
435 "beginCaptures": {
436 "3": {
437 "name": "variable.parameter.javascript.embedded.pug"
438 }
439 },
440 "end": "(?=\\])|(({\\s*)?$)",
441 "name": "source.js",
442 "comment": "name = function() {}",
443 "patterns": [
444 {
445 "include": "#js_brackets"
446 },
447 {
448 "include": "#babel_parens"
449 },
450 {
451 "include": "source.js"
452 }
453 ]
454 },
455 "mixin_definition": {
456 "match": "(mixin\\s+)([\\w-]+)(?:(\\()\\s*((?:[a-zA-Z_]\\w*\\s*)(?:,\\s*[a-zA-Z_]\\w*\\s*)*)(\\)))?$",
457 "captures": {
458 "1": {
459 "name": "storage.type.function.pug"
460 },
461 "2": {
462 "name": "meta.tag.other entity.name.function.pug"
463 },
464 "3": {
465 "name": "punctuation.definition.parameters.begin.js"
466 },
467 "4": {
468 "name": "variable.parameter.function.js"
469 },
470 "5": {
471 "name": "punctuation.definition.parameters.begin.js"
472 }
473 }
474 },
475 "mixin_call": {
476 "begin": "((?:mixin\\s+)|\\+)([\\w-]+)",
477 "beginCaptures": {
478 "1": {
479 "name": "storage.type.function.pug"
480 },
481 "2": {
482 "name": "meta.tag.other entity.name.function.pug"
483 }
484 },
485 "end": "(?!\\()|$",
486 "patterns": [
487 {
488 "begin": "(?<!\\))\\(",
489 "end": "\\)",
490 "name": "args.mixin.pug",
491 "patterns": [
492 {
493 "include": "#js_parens"
494 },
495 {
496 "match": "([^\\s(),=/]+)\\s*=\\s*",
497 "captures": {
498 "1": {
499 "name": "meta.tag.other entity.other.attribute-name.tag.pug"
500 }
501 }
502 },
503 {
504 "include": "source.js"
505 }
506 ]
507 },
508 {
509 "include": "#tag_attributes"
510 }
511 ]
512 },
513 "flow_control": {
514 "begin": "(for|if|else if|else|until|while|unless|case)(\\s+|$)",
515 "captures": {
516 "1": {
517 "name": "storage.type.function.pug"
518 }
519 },
520 "end": "$",
521 "name": "meta.control.flow.pug",
522 "comment": "Pug control flow.",
523 "patterns": [
524 {
525 "begin": "",
526 "end": "$",
527 "name": "js.embedded.control.flow.pug",
528 "patterns": [
529 {
530 "include": "source.js"
531 }
532 ]
533 }
534 ]
535 },
536 "flow_control_each": {
537 "begin": "(each)(\\s+|$)",
538 "captures": {
539 "1": {
540 "name": "storage.type.function.pug"
541 }
542 },
543 "end": "$",
544 "name": "meta.control.flow.pug.each",
545 "patterns": [
546 {
547 "match": "([\\w$_]+)(?:\\s*,\\s*([\\w$_]+))?",
548 "name": "variable.other.pug.each-var"
549 },
550 {
551 "begin": "",
552 "end": "$",
553 "name": "js.embedded.control.flow.pug",
554 "patterns": [
555 {
556 "include": "source.js"
557 }
558 ]
559 }
560 ]
561 },
562 "case_when_paren": {
563 "begin": "\\(",
564 "end": "\\)",
565 "name": "js.when.control.flow.pug",
566 "patterns": [
567 {
568 "include": "#case_when_paren"
569 },
570 {
571 "match": ":",
572 "name": "invalid.illegal.name.tag.pug"
573 },
574 {
575 "include": "source.js"
576 }
577 ]
578 },
579 "case_conds": {
580 "begin": "(default|when)((\\s+|(?=:))|$)",
581 "captures": {
582 "1": {
583 "name": "storage.type.function.pug"
584 }
585 },
586 "end": "$",
587 "name": "meta.control.flow.pug",
588 "comment": "Pug case conditionals.",
589 "patterns": [
590 {
591 "begin": "\\G(?!:)",
592 "end": "(?=:\\s+)|$",
593 "name": "js.embedded.control.flow.pug",
594 "patterns": [
595 {
596 "include": "#case_when_paren"
597 },
598 {
599 "include": "source.js"
600 }
601 ]
602 },
603 {
604 "begin": ":\\s+",
605 "end": "$",
606 "name": "tag.case.control.flow.pug",
607 "patterns": [
608 {
609 "include": "#complete_tag"
610 }
611 ]
612 }
613 ]
614 },
615 "complete_tag": {
616 "begin": "(?=[\\w.#])|(:\\s*)",
617 "end": "(\\.?$)|(?=:.)",
618 "endCaptures": {
619 "1": {
620 "name": "storage.type.function.pug.dot-block-dot"
621 }
622 },
623 "patterns": [
624 {
625 "include": "#blocks_and_includes"
626 },
627 {
628 "include": "#unbuffered_code"
629 },
630 {
631 "include": "#mixin_call"
632 },
633 {
634 "include": "#flow_control"
635 },
636 {
637 "include": "#flow_control_each"
638 },
639 {
640 "match": "(?<=:)\\w.*$",
641 "name": "invalid.illegal.name.tag.pug"
642 },
643 {
644 "include": "#tag_name"
645 },
646 {
647 "include": "#tag_id"
648 },
649 {
650 "include": "#tag_classes"
651 },
652 {
653 "include": "#tag_attributes"
654 },
655 {
656 "include": "#tag_mixin_attributes"
657 },
658 {
659 "match": "((\\.)\\s+$)|((:)\\s*$)",
660 "captures": {
661 "2": {
662 "name": "invalid.illegal.end.tag.pug"
663 },
664 "4": {
665 "name": "invalid.illegal.end.tag.pug"
666 }
667 }
668 },
669 {
670 "include": "#printed_expression"
671 },
672 {
673 "include": "#tag_text"
674 }
675 ]
676 },
677 "tag_name": {
678 "begin": "([#!]\\{(?=.*?\\}))|(\\w(([\\w:-]+[\\w-])|([\\w-]*)))",
679 "end": "(\\G(?<!\\5[^\\w-]))|\\}|$",
680 "name": "meta.tag.other entity.name.tag.pug",
681 "patterns": [
682 {
683 "begin": "\\G(?<=\\{)",
684 "end": "(?=\\})",
685 "name": "meta.tag.other entity.name.tag.pug",
686 "patterns": [
687 {
688 "match": "{",
689 "name": "invalid.illegal.tag.pug"
690 },
691 {
692 "include": "source.js"
693 }
694 ]
695 }
696 ]
697 },
698 "tag_id": {
699 "match": "#[\\w-]+",
700 "name": "meta.selector.css entity.other.attribute-name.id.css.pug"
701 },
702 "tag_classes": {
703 "match": "\\.([^\\w-])?[\\w-]*",
704 "captures": {
705 "1": {
706 "name": "invalid.illegal.tag.pug"
707 }
708 },
709 "name": "meta.selector.css entity.other.attribute-name.class.css.pug"
710 },
711 "tag_attributes": {
712 "begin": "(\\(\\s*)",
713 "captures": {
714 "1": {
715 "name": "constant.name.attribute.tag.pug"
716 }
717 },
718 "end": "(\\))",
719 "name": "meta.tag.other",
720 "patterns": [
721 {
722 "include": "#tag_attribute_name_paren"
723 },
724 {
725 "include": "#tag_attribute_name"
726 },
727 {
728 "match": "!(?!=)",
729 "name": "invalid.illegal.tag.pug"
730 },
731 {
732 "begin": "=\\s*",
733 "end": "$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",
734 "name": "attribute_value",
735 "patterns": [
736 {
737 "include": "#js_parens"
738 },
739 {
740 "include": "#js_brackets"
741 },
742 {
743 "include": "#js_braces"
744 },
745 {
746 "include": "source.js"
747 }
748 ]
749 },
750 {
751 "begin": "(?<=[%&*\\-+~|<>:?/])\\s+",
752 "end": "$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",
753 "name": "attribute_value2",
754 "patterns": [
755 {
756 "include": "#js_parens"
757 },
758 {
759 "include": "#js_brackets"
760 },
761 {
762 "include": "#js_braces"
763 },
764 {
765 "include": "source.js"
766 }
767 ]
768 }
769 ]
770 },
771 "tag_attribute_name": {
772 "match": "([^\\s(),=/!]+)\\s*",
773 "captures": {
774 "1": {
775 "name": "entity.other.attribute-name.tag.pug"
776 }
777 }
778 },
779 "tag_attribute_name_paren": {
780 "begin": "\\(\\s*",
781 "end": "\\)",
782 "name": "entity.other.attribute-name.tag.pug",
783 "patterns": [
784 {
785 "include": "#tag_attribute_name_paren"
786 },
787 {
788 "include": "#tag_attribute_name"
789 }
790 ]
791 },
792 "tag_mixin_attributes": {
793 "begin": "(&attributes\\()",
794 "captures": {
795 "1": {
796 "name": "entity.name.function.pug"
797 }
798 },
799 "end": "(\\))",
800 "name": "meta.tag.other",
801 "patterns": [
802 {
803 "match": "attributes(?=\\))",
804 "name": "storage.type.keyword.pug"
805 },
806 {
807 "include": "source.js"
808 }
809 ]
810 },
811 "tag_text": {
812 "begin": "(?=.)",
813 "end": "$",
814 "patterns": [
815 {
816 "include": "#inline_pug"
817 },
818 {
819 "include": "#embedded_html"
820 },
821 {
822 "include": "#html_entity"
823 },
824 {
825 "include": "#interpolated_value"
826 },
827 {
828 "include": "#interpolated_error"
829 }
830 ]
831 },
832 "inline_pug_text": {
833 "begin": "",
834 "end": "(?=\\])",
835 "patterns": [
836 {
837 "begin": "\\[",
838 "end": "\\]",
839 "patterns": [
840 {
841 "include": "#inline_pug_text"
842 }
843 ]
844 },
845 {
846 "include": "#inline_pug"
847 },
848 {
849 "include": "#embedded_html"
850 },
851 {
852 "include": "#html_entity"
853 },
854 {
855 "include": "#interpolated_value"
856 },
857 {
858 "include": "#interpolated_error"
859 }
860 ]
861 },
862 "inline_pug": {
863 "begin": "(?<!\\\\)(#\\[)",
864 "captures": {
865 "1": {
866 "name": "entity.name.function.pug"
867 },
868 "2": {
869 "name": "entity.name.function.pug"
870 }
871 },
872 "end": "(\\])",
873 "name": "inline.pug",
874 "patterns": [
875 {
876 "include": "#inline_pug"
877 },
878 {
879 "include": "#mixin_call"
880 },
881 {
882 "begin": "(?<!\\])(?=[\\w.#])|(:\\s*)",
883 "end": "(?=\\]|(:.)|=|\\s)",
884 "name": "tag.inline.pug",
885 "patterns": [
886 {
887 "include": "#tag_name"
888 },
889 {
890 "include": "#tag_id"
891 },
892 {
893 "include": "#tag_classes"
894 },
895 {
896 "include": "#tag_attributes"
897 },
898 {
899 "include": "#tag_mixin_attributes"
900 },
901 {
902 "include": "#inline_pug"
903 },
904 {
905 "match": "\\[",
906 "name": "invalid.illegal.tag.pug"
907 }
908 ]
909 },
910 {
911 "include": "#unbuffered_code"
912 },
913 {
914 "include": "#printed_expression"
915 },
916 {
917 "match": "\\[",
918 "name": "invalid.illegal.tag.pug"
919 },
920 {
921 "include": "#inline_pug_text"
922 }
923 ]
924 },
925 "html_entity": {
926 "patterns": [
927 {
928 "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
929 "name": "constant.character.entity.html.text.pug"
930 },
931 {
932 "match": "[<>&]",
933 "name": "invalid.illegal.html_entity.text.pug"
934 }
935 ]
936 },
937 "interpolated_value": {
938 "begin": "(?<!\\\\)[#!]\\{(?=.*?\\})",
939 "end": "\\}",
940 "name": "string.interpolated.pug",
941 "patterns": [
942 {
943 "match": "{",
944 "name": "invalid.illegal.tag.pug"
945 },
946 {
947 "include": "source.js"
948 }
949 ]
950 },
951 "interpolated_error": {
952 "match": "(?<!\\\\)[#!]\\{(?=[^}]*$)",
953 "name": "invalid.illegal.tag.pug"
954 },
955 "printed_expression": {
956 "begin": "(!?\\=)\\s*",
957 "captures": {
958 "1": {
959 "name": "constant"
960 }
961 },
962 "end": "(?=\\])|$",
963 "name": "source.js",
964 "patterns": [
965 {
966 "include": "#js_brackets"
967 },
968 {
969 "include": "source.js"
970 }
971 ]
972 },
973 "embedded_html": {
974 "begin": "(?=<[^>]*>)",
975 "end": "$|(?=>)",
976 "name": "html",
977 "patterns": [
978 {
979 "include": "text.html.basic"
980 },
981 {
982 "include": "#interpolated_value"
983 },
984 {
985 "include": "#interpolated_error"
986 }
987 ]
988 },
989 "js_parens": {
990 "begin": "\\(",
991 "end": "\\)",
992 "patterns": [
993 {
994 "include": "#js_parens"
995 },
996 {
997 "include": "source.js"
998 }
999 ]
1000 },
1001 "js_brackets": {
1002 "begin": "\\[",
1003 "end": "\\]",
1004 "patterns": [
1005 {
1006 "include": "#js_brackets"
1007 },
1008 {
1009 "include": "source.js"
1010 }
1011 ]
1012 },
1013 "js_braces": {
1014 "begin": "\\{",
1015 "end": "\\}",
1016 "patterns": [
1017 {
1018 "include": "#js_braces"
1019 },
1020 {
1021 "include": "source.js"
1022 }
1023 ]
1024 },
1025 "babel_parens": {
1026 "begin": "\\(",
1027 "end": "\\)|(({\\s*)?$)",
1028 "patterns": [
1029 {
1030 "include": "#babel_parens"
1031 },
1032 {
1033 "include": "source.js"
1034 }
1035 ]
1036 }
1037 }
1038 }
1039