PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.11.0
Code Block Pro – Beautiful Syntax Highlighting v1.11.0
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.11.0, at build/shiki/languages/pug.tmLanguage.json

1,065 lines 24.7 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/aee5f096dac969fe09afac55f05f3f4e774f61a3",
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": "entity.other.attribute-name.id.pug"
276 },
277 "3": {
278 "name": "entity.other.attribute-name.class.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 "include": "#string"
497 },
498 {
499 "match": "([^\\s(),=/]+)\\s*=\\s*",
500 "captures": {
501 "1": {
502 "name": "meta.tag.other entity.other.attribute-name.tag.pug"
503 }
504 }
505 },
506 {
507 "include": "source.js"
508 }
509 ]
510 },
511 {
512 "include": "#tag_attributes"
513 }
514 ]
515 },
516 "flow_control": {
517 "begin": "(for|if|else if|else|until|while|unless|case)(\\s+|$)",
518 "captures": {
519 "1": {
520 "name": "storage.type.function.pug"
521 }
522 },
523 "end": "$",
524 "name": "meta.control.flow.pug",
525 "comment": "Pug control flow.",
526 "patterns": [
527 {
528 "begin": "",
529 "end": "$",
530 "name": "js.embedded.control.flow.pug",
531 "patterns": [
532 {
533 "include": "source.js"
534 }
535 ]
536 }
537 ]
538 },
539 "flow_control_each": {
540 "begin": "(each)(\\s+|$)",
541 "captures": {
542 "1": {
543 "name": "storage.type.function.pug"
544 }
545 },
546 "end": "$",
547 "name": "meta.control.flow.pug.each",
548 "patterns": [
549 {
550 "match": "([\\w$_]+)(?:\\s*,\\s*([\\w$_]+))?",
551 "name": "variable.other.pug.each-var"
552 },
553 {
554 "begin": "",
555 "end": "$",
556 "name": "js.embedded.control.flow.pug",
557 "patterns": [
558 {
559 "include": "source.js"
560 }
561 ]
562 }
563 ]
564 },
565 "case_when_paren": {
566 "begin": "\\(",
567 "end": "\\)",
568 "name": "js.when.control.flow.pug",
569 "patterns": [
570 {
571 "include": "#case_when_paren"
572 },
573 {
574 "match": ":",
575 "name": "invalid.illegal.name.tag.pug"
576 },
577 {
578 "include": "source.js"
579 }
580 ]
581 },
582 "case_conds": {
583 "begin": "(default|when)((\\s+|(?=:))|$)",
584 "captures": {
585 "1": {
586 "name": "storage.type.function.pug"
587 }
588 },
589 "end": "$",
590 "name": "meta.control.flow.pug",
591 "comment": "Pug case conditionals.",
592 "patterns": [
593 {
594 "begin": "\\G(?!:)",
595 "end": "(?=:\\s+)|$",
596 "name": "js.embedded.control.flow.pug",
597 "patterns": [
598 {
599 "include": "#case_when_paren"
600 },
601 {
602 "include": "source.js"
603 }
604 ]
605 },
606 {
607 "begin": ":\\s+",
608 "end": "$",
609 "name": "tag.case.control.flow.pug",
610 "patterns": [
611 {
612 "include": "#complete_tag"
613 }
614 ]
615 }
616 ]
617 },
618 "complete_tag": {
619 "begin": "(?=[\\w.#])|(:\\s*)",
620 "end": "(\\.?$)|(?=:.)",
621 "endCaptures": {
622 "1": {
623 "name": "storage.type.function.pug.dot-block-dot"
624 }
625 },
626 "patterns": [
627 {
628 "include": "#blocks_and_includes"
629 },
630 {
631 "include": "#unbuffered_code"
632 },
633 {
634 "include": "#mixin_call"
635 },
636 {
637 "include": "#flow_control"
638 },
639 {
640 "include": "#flow_control_each"
641 },
642 {
643 "match": "(?<=:)\\w.*$",
644 "name": "invalid.illegal.name.tag.pug"
645 },
646 {
647 "include": "#tag_name"
648 },
649 {
650 "include": "#tag_id"
651 },
652 {
653 "include": "#tag_classes"
654 },
655 {
656 "include": "#tag_attributes"
657 },
658 {
659 "include": "#tag_mixin_attributes"
660 },
661 {
662 "match": "((\\.)\\s+$)|((:)\\s*$)",
663 "captures": {
664 "2": {
665 "name": "invalid.illegal.end.tag.pug"
666 },
667 "4": {
668 "name": "invalid.illegal.end.tag.pug"
669 }
670 }
671 },
672 {
673 "include": "#printed_expression"
674 },
675 {
676 "include": "#tag_text"
677 }
678 ]
679 },
680 "tag_name": {
681 "begin": "([#!]\\{(?=.*?\\}))|(\\w(([\\w:-]+[\\w-])|([\\w-]*)))",
682 "end": "(\\G(?<!\\5[^\\w-]))|\\}|$",
683 "name": "meta.tag.other entity.name.tag.pug",
684 "patterns": [
685 {
686 "begin": "\\G(?<=\\{)",
687 "end": "(?=\\})",
688 "name": "meta.tag.other entity.name.tag.pug",
689 "patterns": [
690 {
691 "match": "{",
692 "name": "invalid.illegal.tag.pug"
693 },
694 {
695 "include": "source.js"
696 }
697 ]
698 }
699 ]
700 },
701 "tag_id": {
702 "match": "#[\\w-]+",
703 "name": "entity.other.attribute-name.id.pug"
704 },
705 "tag_classes": {
706 "match": "\\.([^\\w-])?[\\w-]*",
707 "captures": {
708 "1": {
709 "name": "invalid.illegal.tag.pug"
710 }
711 },
712 "name": "entity.other.attribute-name.class.pug"
713 },
714 "tag_attributes": {
715 "begin": "(\\(\\s*)",
716 "captures": {
717 "1": {
718 "name": "constant.name.attribute.tag.pug"
719 }
720 },
721 "end": "(\\))",
722 "name": "meta.tag.other",
723 "patterns": [
724 {
725 "include": "#tag_attribute_name_paren"
726 },
727 {
728 "include": "#tag_attribute_name"
729 },
730 {
731 "match": "!(?!=)",
732 "name": "invalid.illegal.tag.pug"
733 },
734 {
735 "begin": "=\\s*",
736 "end": "$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",
737 "name": "attribute_value",
738 "patterns": [
739 {
740 "include": "#string"
741 },
742 {
743 "include": "#js_parens"
744 },
745 {
746 "include": "#js_brackets"
747 },
748 {
749 "include": "#js_braces"
750 },
751 {
752 "include": "source.js"
753 }
754 ]
755 },
756 {
757 "begin": "(?<=[%&*\\-+~|<>:?/])\\s+",
758 "end": "$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",
759 "name": "attribute_value2",
760 "patterns": [
761 {
762 "include": "#string"
763 },
764 {
765 "include": "#js_parens"
766 },
767 {
768 "include": "#js_brackets"
769 },
770 {
771 "include": "#js_braces"
772 },
773 {
774 "include": "source.js"
775 }
776 ]
777 }
778 ]
779 },
780 "tag_attribute_name": {
781 "match": "([^\\s(),=/!]+)\\s*",
782 "captures": {
783 "1": {
784 "name": "entity.other.attribute-name.tag.pug"
785 }
786 }
787 },
788 "tag_attribute_name_paren": {
789 "begin": "\\(\\s*",
790 "end": "\\)",
791 "name": "entity.other.attribute-name.tag.pug",
792 "patterns": [
793 {
794 "include": "#tag_attribute_name_paren"
795 },
796 {
797 "include": "#tag_attribute_name"
798 }
799 ]
800 },
801 "tag_mixin_attributes": {
802 "begin": "(&attributes\\()",
803 "captures": {
804 "1": {
805 "name": "entity.name.function.pug"
806 }
807 },
808 "end": "(\\))",
809 "name": "meta.tag.other",
810 "patterns": [
811 {
812 "match": "attributes(?=\\))",
813 "name": "storage.type.keyword.pug"
814 },
815 {
816 "include": "source.js"
817 }
818 ]
819 },
820 "tag_text": {
821 "begin": "(?=.)",
822 "end": "$",
823 "patterns": [
824 {
825 "include": "#inline_pug"
826 },
827 {
828 "include": "#embedded_html"
829 },
830 {
831 "include": "#html_entity"
832 },
833 {
834 "include": "#interpolated_value"
835 },
836 {
837 "include": "#interpolated_error"
838 }
839 ]
840 },
841 "inline_pug_text": {
842 "begin": "",
843 "end": "(?=\\])",
844 "patterns": [
845 {
846 "begin": "\\[",
847 "end": "\\]",
848 "patterns": [
849 {
850 "include": "#inline_pug_text"
851 }
852 ]
853 },
854 {
855 "include": "#inline_pug"
856 },
857 {
858 "include": "#embedded_html"
859 },
860 {
861 "include": "#html_entity"
862 },
863 {
864 "include": "#interpolated_value"
865 },
866 {
867 "include": "#interpolated_error"
868 }
869 ]
870 },
871 "inline_pug": {
872 "begin": "(?<!\\\\)(#\\[)",
873 "captures": {
874 "1": {
875 "name": "entity.name.function.pug"
876 },
877 "2": {
878 "name": "entity.name.function.pug"
879 }
880 },
881 "end": "(\\])",
882 "name": "inline.pug",
883 "patterns": [
884 {
885 "include": "#inline_pug"
886 },
887 {
888 "include": "#mixin_call"
889 },
890 {
891 "begin": "(?<!\\])(?=[\\w.#])|(:\\s*)",
892 "end": "(?=\\]|(:.)|=|\\s)",
893 "name": "tag.inline.pug",
894 "patterns": [
895 {
896 "include": "#tag_name"
897 },
898 {
899 "include": "#tag_id"
900 },
901 {
902 "include": "#tag_classes"
903 },
904 {
905 "include": "#tag_attributes"
906 },
907 {
908 "include": "#tag_mixin_attributes"
909 },
910 {
911 "include": "#inline_pug"
912 },
913 {
914 "match": "\\[",
915 "name": "invalid.illegal.tag.pug"
916 }
917 ]
918 },
919 {
920 "include": "#unbuffered_code"
921 },
922 {
923 "include": "#printed_expression"
924 },
925 {
926 "match": "\\[",
927 "name": "invalid.illegal.tag.pug"
928 },
929 {
930 "include": "#inline_pug_text"
931 }
932 ]
933 },
934 "html_entity": {
935 "patterns": [
936 {
937 "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
938 "name": "constant.character.entity.html.text.pug"
939 },
940 {
941 "match": "[<>&]",
942 "name": "invalid.illegal.html_entity.text.pug"
943 }
944 ]
945 },
946 "interpolated_value": {
947 "begin": "(?<!\\\\)[#!]\\{(?=.*?\\})",
948 "end": "\\}",
949 "name": "string.interpolated.pug",
950 "patterns": [
951 {
952 "match": "{",
953 "name": "invalid.illegal.tag.pug"
954 },
955 {
956 "include": "source.js"
957 }
958 ]
959 },
960 "interpolated_error": {
961 "match": "(?<!\\\\)[#!]\\{(?=[^}]*$)",
962 "name": "invalid.illegal.tag.pug"
963 },
964 "printed_expression": {
965 "begin": "(!?\\=)\\s*",
966 "captures": {
967 "1": {
968 "name": "constant"
969 }
970 },
971 "end": "(?=\\])|$",
972 "name": "source.js",
973 "patterns": [
974 {
975 "include": "#js_brackets"
976 },
977 {
978 "include": "source.js"
979 }
980 ]
981 },
982 "string": {
983 "begin": "(['\"])",
984 "end": "(?<!\\\\)\\1",
985 "name": "string.quoted.pug",
986 "patterns": [
987 {
988 "match": "\\\\((x[0-9a-fA-F]{2})|(u[0-9]{4})|.)",
989 "name": "constant.character.quoted.pug"
990 },
991 {
992 "include": "#interpolated_value"
993 },
994 {
995 "include": "#interpolated_error"
996 }
997 ]
998 },
999 "embedded_html": {
1000 "begin": "(?=<[^>]*>)",
1001 "end": "$|(?=>)",
1002 "name": "html",
1003 "patterns": [
1004 {
1005 "include": "text.html.basic"
1006 },
1007 {
1008 "include": "#interpolated_value"
1009 },
1010 {
1011 "include": "#interpolated_error"
1012 }
1013 ]
1014 },
1015 "js_parens": {
1016 "begin": "\\(",
1017 "end": "\\)",
1018 "patterns": [
1019 {
1020 "include": "#js_parens"
1021 },
1022 {
1023 "include": "source.js"
1024 }
1025 ]
1026 },
1027 "js_brackets": {
1028 "begin": "\\[",
1029 "end": "\\]",
1030 "patterns": [
1031 {
1032 "include": "#js_brackets"
1033 },
1034 {
1035 "include": "source.js"
1036 }
1037 ]
1038 },
1039 "js_braces": {
1040 "begin": "\\{",
1041 "end": "\\}",
1042 "patterns": [
1043 {
1044 "include": "#js_braces"
1045 },
1046 {
1047 "include": "source.js"
1048 }
1049 ]
1050 },
1051 "babel_parens": {
1052 "begin": "\\(",
1053 "end": "\\)|(({\\s*)?$)",
1054 "patterns": [
1055 {
1056 "include": "#babel_parens"
1057 },
1058 {
1059 "include": "source.js"
1060 }
1061 ]
1062 }
1063 }
1064 }
1065