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 / liquid.tmLanguage.json

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

975 lines 23.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "name": "liquid",
3 "scopeName": "text.html.liquid",
4 "fileTypes": ["liquid"],
5 "foldingStartMarker": "(?x)\n{%\n -?\n \\s*\n (capture|case|comment|for|form|if|javascript|paginate|schema|style)\n [^(%})]+\n%}\n",
6 "foldingStopMarker": "(?x)\n{%\n \\s*\n (endcapture|endcase|endcomment|endfor|endform|endif|endjavascript|endpaginate|endschema|endstyle)\n [^(%})]+\n%}\n",
7 "injections": {
8 "L:meta.embedded.block.js, L:meta.embedded.block.css, L:meta.embedded.block.html, L:string.quoted": {
9 "patterns": [
10 {
11 "include": "#injection"
12 }
13 ]
14 }
15 },
16 "patterns": [
17 {
18 "include": "#core"
19 }
20 ],
21 "repository": {
22 "core": {
23 "patterns": [
24 {
25 "include": "#raw_tag"
26 },
27 {
28 "include": "#comment_block"
29 },
30 {
31 "include": "#comment_inline"
32 },
33 {
34 "include": "#style_codefence"
35 },
36 {
37 "include": "#stylesheet_codefence"
38 },
39 {
40 "include": "#json_codefence"
41 },
42 {
43 "include": "#javascript_codefence"
44 },
45 {
46 "include": "#object"
47 },
48 {
49 "include": "#tag"
50 },
51 {
52 "include": "text.html.basic"
53 }
54 ]
55 },
56 "injection": {
57 "patterns": [
58 {
59 "include": "#raw_tag"
60 },
61 {
62 "include": "#comment_block"
63 },
64 {
65 "include": "#comment_inline"
66 },
67 {
68 "include": "#object"
69 },
70 {
71 "include": "#tag_injection"
72 }
73 ]
74 },
75 "raw_tag": {
76 "begin": "{%-?\\s*(raw)\\s*-?%}",
77 "end": "{%-?\\s*(endraw)\\s*-?%}",
78 "beginCaptures": {
79 "1": {
80 "name": "entity.name.tag.liquid"
81 }
82 },
83 "endCaptures": {
84 "1": {
85 "name": "entity.name.tag.liquid"
86 }
87 },
88 "name": "meta.entity.tag.raw.liquid",
89 "contentName": "string.unquoted.liquid",
90 "patterns": [
91 {
92 "match": "(.(?!{%-?\\s*endraw\\s*-?%}))*."
93 }
94 ]
95 },
96 "comment_block": {
97 "begin": "{%-?\\s*comment\\s*-?%}",
98 "end": "{%-?\\s*endcomment\\s*-?%}",
99 "name": "comment.block.liquid",
100 "patterns": [
101 {
102 "include": "#comment_block"
103 },
104 {
105 "match": "(.(?!{%-?\\s*(comment|endcomment)\\s*-?%}))*."
106 }
107 ]
108 },
109 "comment_inline": {
110 "begin": "{%-?\\s*#",
111 "end": "-?%}",
112 "name": "comment.line.number-sign.liquid"
113 },
114 "style_codefence": {
115 "begin": "({%-?)\\s*(style)\\s*(-?%})",
116 "end": "({%-?)\\s*(endstyle)\\s*(-?%})",
117 "beginCaptures": {
118 "0": {
119 "name": "meta.tag.metadata.style.start.liquid"
120 },
121 "1": {
122 "name": "punctuation.definition.tag.begin.liquid"
123 },
124 "2": {
125 "name": "entity.name.tag.style.liquid"
126 },
127 "3": {
128 "name": "punctuation.definition.tag.begin.liquid"
129 }
130 },
131 "endCaptures": {
132 "0": {
133 "name": "meta.tag.metadata.style.end.liquid"
134 },
135 "1": {
136 "name": "punctuation.definition.tag.end.liquid"
137 },
138 "2": {
139 "name": "entity.name.tag.style.liquid"
140 },
141 "3": {
142 "name": "punctuation.definition.tag.end.liquid"
143 }
144 },
145 "name": "meta.block.style.liquid",
146 "contentName": "meta.embedded.block.css",
147 "patterns": [
148 {
149 "include": "source.css"
150 }
151 ]
152 },
153 "stylesheet_codefence": {
154 "begin": "({%-?)\\s*(stylesheet)\\s*(-?%})",
155 "end": "({%-?)\\s*(endstylesheet)\\s*(-?%})",
156 "beginCaptures": {
157 "0": {
158 "name": "meta.tag.metadata.style.start.liquid"
159 },
160 "1": {
161 "name": "punctuation.definition.tag.begin.liquid"
162 },
163 "2": {
164 "name": "entity.name.tag.style.liquid"
165 },
166 "3": {
167 "name": "punctuation.definition.tag.begin.liquid"
168 }
169 },
170 "endCaptures": {
171 "0": {
172 "name": "meta.tag.metadata.style.end.liquid"
173 },
174 "1": {
175 "name": "punctuation.definition.tag.end.liquid"
176 },
177 "2": {
178 "name": "entity.name.tag.style.liquid"
179 },
180 "3": {
181 "name": "punctuation.definition.tag.end.liquid"
182 }
183 },
184 "name": "meta.block.style.liquid",
185 "contentName": "meta.embedded.block.css",
186 "patterns": [
187 {
188 "include": "source.css"
189 }
190 ]
191 },
192 "json_codefence": {
193 "begin": "({%-?)\\s*(schema)\\s*(-?%})",
194 "end": "({%-?)\\s*(endschema)\\s*(-?%})",
195 "beginCaptures": {
196 "0": {
197 "name": "meta.tag.metadata.schema.start.liquid"
198 },
199 "1": {
200 "name": "punctuation.definition.tag.begin.liquid"
201 },
202 "2": {
203 "name": "entity.name.tag.schema.liquid"
204 },
205 "3": {
206 "name": "punctuation.definition.tag.begin.liquid"
207 }
208 },
209 "endCaptures": {
210 "0": {
211 "name": "meta.tag.metadata.schema.end.liquid"
212 },
213 "1": {
214 "name": "punctuation.definition.tag.end.liquid"
215 },
216 "2": {
217 "name": "entity.name.tag.schema.liquid"
218 },
219 "3": {
220 "name": "punctuation.definition.tag.end.liquid"
221 }
222 },
223 "name": "meta.block.schema.liquid",
224 "contentName": "meta.embedded.block.json",
225 "patterns": [
226 {
227 "include": "source.json"
228 }
229 ]
230 },
231 "javascript_codefence": {
232 "begin": "({%-?)\\s*(javascript)\\s*(-?%})",
233 "end": "({%-?)\\s*(endjavascript)\\s*(-?%})",
234 "beginCaptures": {
235 "0": {
236 "name": "meta.tag.metadata.javascript.start.liquid"
237 },
238 "1": {
239 "name": "punctuation.definition.tag.begin.liquid"
240 },
241 "2": {
242 "name": "entity.name.tag.javascript.liquid"
243 },
244 "3": {
245 "name": "punctuation.definition.tag.begin.liquid"
246 }
247 },
248 "endCaptures": {
249 "0": {
250 "name": "meta.tag.metadata.javascript.end.liquid"
251 },
252 "1": {
253 "name": "punctuation.definition.tag.end.liquid"
254 },
255 "2": {
256 "name": "entity.name.tag.javascript.liquid"
257 },
258 "3": {
259 "name": "punctuation.definition.tag.end.liquid"
260 }
261 },
262 "name": "meta.block.javascript.liquid",
263 "contentName": "meta.embedded.block.js",
264 "patterns": [
265 {
266 "include": "source.js"
267 }
268 ]
269 },
270 "tag": {
271 "begin": "(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){%-?",
272 "end": "-?%}",
273 "name": "meta.tag.liquid",
274 "beginCaptures": {
275 "0": {
276 "name": "punctuation.definition.tag.begin.liquid"
277 }
278 },
279 "endCaptures": {
280 "0": {
281 "name": "punctuation.definition.tag.end.liquid"
282 }
283 },
284 "patterns": [
285 {
286 "include": "#tag_body"
287 }
288 ]
289 },
290 "tag_injection": {
291 "begin": "(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){%-?(?!-?\\s*(endstyle|endjavascript|endcomment|endraw))",
292 "end": "-?%}",
293 "name": "meta.tag.liquid",
294 "beginCaptures": {
295 "0": {
296 "name": "punctuation.definition.tag.end.liquid"
297 }
298 },
299 "endCaptures": {
300 "0": {
301 "name": "punctuation.definition.tag.end.liquid"
302 }
303 },
304 "patterns": [
305 {
306 "include": "#tag_body"
307 }
308 ]
309 },
310 "tag_body": {
311 "patterns": [
312 {
313 "include": "#tag_liquid"
314 },
315 {
316 "include": "#tag_assign"
317 },
318 {
319 "include": "#tag_case"
320 },
321 {
322 "include": "#tag_conditional"
323 },
324 {
325 "include": "#tag_for"
326 },
327 {
328 "include": "#tag_paginate"
329 },
330 {
331 "include": "#tag_render"
332 },
333 {
334 "include": "#tag_tablerow"
335 },
336 {
337 "include": "#tag_expression"
338 }
339 ]
340 },
341 "tag_liquid": {
342 "name": "meta.entity.tag.liquid.liquid",
343 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(liquid)\\b",
344 "beginCaptures": {
345 "1": {
346 "name": "keyword.control.liquid.liquid"
347 }
348 },
349 "end": "(?=%})",
350 "patterns": [
351 {
352 "include": "#tag_comment_liquid"
353 },
354 {
355 "include": "#tag_assign_liquid"
356 },
357 {
358 "include": "#tag_case_liquid"
359 },
360 {
361 "include": "#tag_conditional_liquid"
362 },
363 {
364 "include": "#tag_for_liquid"
365 },
366 {
367 "include": "#tag_paginate_liquid"
368 },
369 {
370 "include": "#tag_render_liquid"
371 },
372 {
373 "include": "#tag_tablerow_liquid"
374 },
375 {
376 "include": "#tag_expression_liquid"
377 }
378 ]
379 },
380 "tag_comment_liquid": {
381 "name": "comment.block.liquid",
382 "begin": "(?:^\\s*)(comment)\\b",
383 "end": "(?:^\\s*)(endcomment)\\b"
384 },
385 "tag_tablerow": {
386 "name": "meta.entity.tag.tablerow.liquid",
387 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(tablerow)\\b",
388 "beginCaptures": {
389 "1": {
390 "name": "keyword.control.tablerow.liquid"
391 }
392 },
393 "end": "(?=%})",
394 "patterns": [
395 {
396 "include": "#tag_tablerow_body"
397 }
398 ]
399 },
400 "tag_tablerow_liquid": {
401 "name": "meta.entity.tag.tablerow.liquid",
402 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(tablerow)\\b",
403 "beginCaptures": {
404 "1": {
405 "name": "keyword.control.tablerow.liquid"
406 }
407 },
408 "end": "$",
409 "patterns": [
410 {
411 "include": "#tag_tablerow_body"
412 }
413 ]
414 },
415 "tag_tablerow_body": {
416 "patterns": [
417 {
418 "match": "\\b(in)\\b",
419 "name": "keyword.control.liquid"
420 },
421 {
422 "match": "\\b(cols|offset|limit):",
423 "name": "keyword.control.liquid"
424 },
425 {
426 "include": "#value_expression"
427 }
428 ]
429 },
430 "tag_for": {
431 "name": "meta.entity.tag.for.liquid",
432 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(for)\\b",
433 "beginCaptures": {
434 "1": {
435 "name": "keyword.control.for.liquid"
436 }
437 },
438 "end": "(?=%})",
439 "patterns": [
440 {
441 "include": "#tag_for_body"
442 }
443 ]
444 },
445 "tag_for_liquid": {
446 "name": "meta.entity.tag.for.liquid",
447 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(for)\\b",
448 "beginCaptures": {
449 "1": {
450 "name": "keyword.control.for.liquid"
451 }
452 },
453 "end": "$",
454 "patterns": [
455 {
456 "include": "#tag_for_body"
457 }
458 ]
459 },
460 "tag_for_body": {
461 "patterns": [
462 {
463 "match": "\\b(in|reversed)\\b",
464 "name": "keyword.control.liquid"
465 },
466 {
467 "match": "\\b(offset|limit):",
468 "name": "keyword.control.liquid"
469 },
470 {
471 "include": "#value_expression"
472 }
473 ]
474 },
475 "tag_assign": {
476 "name": "meta.entity.tag.liquid",
477 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(assign|echo)\\b",
478 "beginCaptures": {
479 "1": {
480 "name": "entity.name.tag.liquid"
481 }
482 },
483 "end": "(?=%})",
484 "patterns": [
485 {
486 "include": "#filter"
487 },
488 {
489 "include": "#attribute"
490 },
491 {
492 "include": "#value_expression"
493 }
494 ]
495 },
496 "tag_assign_liquid": {
497 "name": "meta.entity.tag.liquid",
498 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(assign|echo)\\b",
499 "beginCaptures": {
500 "1": {
501 "name": "entity.name.tag.liquid"
502 }
503 },
504 "end": "$",
505 "patterns": [
506 {
507 "include": "#filter"
508 },
509 {
510 "include": "#attribute_liquid"
511 },
512 {
513 "include": "#value_expression"
514 }
515 ]
516 },
517 "tag_render": {
518 "name": "meta.entity.tag.render.liquid",
519 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(render)\\b",
520 "beginCaptures": {
521 "1": {
522 "name": "entity.name.tag.render.liquid"
523 }
524 },
525 "end": "(?=%})",
526 "patterns": [
527 {
528 "include": "#tag_render_special_keywords"
529 },
530 {
531 "include": "#attribute"
532 },
533 {
534 "include": "#value_expression"
535 }
536 ]
537 },
538 "tag_render_liquid": {
539 "name": "meta.entity.tag.render.liquid",
540 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(render)\\b",
541 "beginCaptures": {
542 "1": {
543 "name": "entity.name.tag.render.liquid"
544 }
545 },
546 "end": "$",
547 "patterns": [
548 {
549 "include": "#tag_render_special_keywords"
550 },
551 {
552 "include": "#attribute_liquid"
553 },
554 {
555 "include": "#value_expression"
556 }
557 ]
558 },
559 "tag_render_special_keywords": {
560 "match": "\\b(with|as|for)\\b",
561 "name": "keyword.control.other.liquid"
562 },
563 "tag_paginate": {
564 "name": "meta.entity.tag.paginate.liquid",
565 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(paginate)\\b",
566 "beginCaptures": {
567 "1": {
568 "name": "keyword.control.paginate.liquid"
569 }
570 },
571 "end": "(?=%})",
572 "patterns": [
573 {
574 "include": "#tag_paginate_body"
575 }
576 ]
577 },
578 "tag_paginate_liquid": {
579 "name": "meta.entity.tag.paginate.liquid",
580 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(paginate)\\b",
581 "beginCaptures": {
582 "1": {
583 "name": "keyword.control.paginate.liquid"
584 }
585 },
586 "end": "$",
587 "patterns": [
588 {
589 "include": "#tag_paginate_body"
590 }
591 ]
592 },
593 "tag_paginate_body": {
594 "patterns": [
595 {
596 "match": "\\b(by)\\b",
597 "name": "keyword.control.liquid"
598 },
599 {
600 "include": "#value_expression"
601 }
602 ]
603 },
604 "tag_conditional": {
605 "name": "meta.entity.tag.conditional.liquid",
606 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(if|elsif|unless)\\b",
607 "beginCaptures": {
608 "1": {
609 "name": "keyword.control.conditional.liquid"
610 }
611 },
612 "end": "(?=%})",
613 "patterns": [
614 {
615 "include": "#value_expression"
616 }
617 ]
618 },
619 "tag_conditional_liquid": {
620 "name": "meta.entity.tag.conditional.liquid",
621 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(if|elsif|unless)\\b",
622 "beginCaptures": {
623 "1": {
624 "name": "keyword.control.conditional.liquid"
625 }
626 },
627 "end": "$",
628 "patterns": [
629 {
630 "include": "#value_expression"
631 }
632 ]
633 },
634 "tag_case": {
635 "name": "meta.entity.tag.case.liquid",
636 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(case|when)\\b",
637 "beginCaptures": {
638 "1": {
639 "name": "keyword.control.case.liquid"
640 }
641 },
642 "end": "(?=%})",
643 "patterns": [
644 {
645 "include": "#value_expression"
646 }
647 ]
648 },
649 "tag_case_liquid": {
650 "name": "meta.entity.tag.case.liquid",
651 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(case|when)\\b",
652 "beginCaptures": {
653 "1": {
654 "name": "keyword.control.case.liquid"
655 }
656 },
657 "end": "$",
658 "patterns": [
659 {
660 "include": "#value_expression"
661 }
662 ]
663 },
664 "tag_expression_without_arguments": {
665 "patterns": [
666 {
667 "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(endunless|endif)\\b",
668 "captures": {
669 "1": {
670 "name": "keyword.control.conditional.liquid"
671 }
672 }
673 },
674 {
675 "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(endfor|endtablerow|endpaginate)\\b",
676 "captures": {
677 "1": {
678 "name": "keyword.control.loop.liquid"
679 }
680 }
681 },
682 {
683 "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(endcase)\\b",
684 "captures": {
685 "1": {
686 "name": "keyword.control.case.liquid"
687 }
688 }
689 },
690 {
691 "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(capture|case|comment|for|form|if|javascript|paginate|schema|style)\\b",
692 "captures": {
693 "1": {
694 "name": "keyword.control.other.liquid"
695 }
696 }
697 },
698 {
699 "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(endcapture|endcase|endcomment|endfor|endform|endif|endjavascript|endpaginate|endschema|endstyle)\\b",
700 "captures": {
701 "1": {
702 "name": "keyword.control.other.liquid"
703 }
704 }
705 },
706 {
707 "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(else|break|continue)\\b",
708 "captures": {
709 "1": {
710 "name": "keyword.control.other.liquid"
711 }
712 }
713 }
714 ]
715 },
716 "tag_expression": {
717 "patterns": [
718 {
719 "include": "#tag_expression_without_arguments"
720 },
721 {
722 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(\\w+)",
723 "beginCaptures": {
724 "1": {
725 "name": "entity.name.tag.liquid"
726 }
727 },
728 "end": "(?=%})",
729 "name": "meta.entity.tag.liquid",
730 "patterns": [
731 {
732 "include": "#value_expression"
733 }
734 ]
735 }
736 ]
737 },
738 "tag_expression_liquid": {
739 "patterns": [
740 {
741 "include": "#tag_expression_without_arguments"
742 },
743 {
744 "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(\\w+)",
745 "beginCaptures": {
746 "1": {
747 "name": "entity.name.tag.liquid"
748 }
749 },
750 "end": "$",
751 "name": "meta.entity.tag.liquid",
752 "patterns": [
753 {
754 "include": "#value_expression"
755 }
756 ]
757 }
758 ]
759 },
760 "object": {
761 "begin": "(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){{-?",
762 "end": "-?}}",
763 "name": "meta.object.liquid",
764 "beginCaptures": {
765 "0": {
766 "name": "punctuation.definition.tag.begin.liquid"
767 }
768 },
769 "endCaptures": {
770 "0": {
771 "name": "punctuation.definition.tag.end.liquid"
772 }
773 },
774 "patterns": [
775 {
776 "include": "#filter"
777 },
778 {
779 "include": "#attribute"
780 },
781 {
782 "include": "#value_expression"
783 }
784 ]
785 },
786 "invalid_range": {
787 "match": "\\((.(?!\\.\\.))+\\)",
788 "name": "invalid.illegal.range.liquid"
789 },
790 "range": {
791 "begin": "\\(",
792 "end": "\\)",
793 "name": "meta.range.liquid",
794 "beginCaptures": {
795 "0": {
796 "name": "punctuation.section.parens.begin.liquid"
797 }
798 },
799 "endCaptures": {
800 "0": {
801 "name": "punctuation.section.parens.end.liquid"
802 }
803 },
804 "patterns": [
805 {
806 "match": "\\.\\.",
807 "name": "punctuation.range.liquid"
808 },
809 {
810 "include": "#variable_lookup"
811 },
812 {
813 "include": "#number"
814 }
815 ]
816 },
817 "number": {
818 "match": "((-|\\+)\\s*)?[0-9]+(\\.[0-9]+)?",
819 "name": "constant.numeric.liquid"
820 },
821 "string": {
822 "patterns": [
823 {
824 "include": "#string_single"
825 },
826 {
827 "include": "#string_double"
828 }
829 ]
830 },
831 "string_double": {
832 "begin": "\"",
833 "end": "\"",
834 "name": "string.quoted.double.liquid"
835 },
836 "string_single": {
837 "begin": "'",
838 "end": "'",
839 "name": "string.quoted.single.liquid"
840 },
841 "operator": {
842 "match": "(?:(?<=\\s)|\\b)(\\=\\=|!\\=|\\>|\\<|\\>\\=|\\<\\=|or|and|contains)(?:(?=\\s)|\\b)",
843 "captures": {
844 "1": {
845 "name": "keyword.operator.expression.liquid"
846 }
847 }
848 },
849 "language_constant": {
850 "match": "\\b(false|true|nil|blank)\\b|empty(?!\\?)",
851 "name": "constant.language.liquid"
852 },
853 "attribute": {
854 "begin": "\\w+:",
855 "end": "(?=,|%}|}}|\\|)",
856 "beginCaptures": {
857 "0": {
858 "name": "entity.other.attribute-name.liquid"
859 }
860 },
861 "patterns": [
862 {
863 "include": "#value_expression"
864 }
865 ]
866 },
867 "attribute_liquid": {
868 "begin": "\\w+:",
869 "end": "(?=,|\\|)|$",
870 "beginCaptures": {
871 "0": {
872 "name": "entity.other.attribute-name.liquid"
873 }
874 },
875 "patterns": [
876 {
877 "include": "#value_expression"
878 }
879 ]
880 },
881 "filter": {
882 "match": "\\|\\s*((?![\\.0-9])[a-zA-Z0-9_-]+\\:?)\\s*",
883 "captures": {
884 "1": {
885 "name": "support.function.liquid"
886 }
887 }
888 },
889 "value_expression": {
890 "patterns": [
891 {
892 "match": "(\\[)(\\|)(?=[^\\]]*)(?=\\])",
893 "captures": {
894 "2": {
895 "name": "invalid.illegal.filter.liquid"
896 },
897 "3": {
898 "name": "invalid.illegal.filter.liquid"
899 }
900 }
901 },
902 {
903 "match": "(?<=\\s)(\\+|\\-|\\/|\\*)(?=\\s)",
904 "name": "invalid.illegal.filter.liquid"
905 },
906 {
907 "include": "#language_constant"
908 },
909 {
910 "include": "#operator"
911 },
912 {
913 "include": "#invalid_range"
914 },
915 {
916 "include": "#range"
917 },
918 {
919 "include": "#number"
920 },
921 {
922 "include": "#string"
923 },
924 {
925 "include": "#variable_lookup"
926 }
927 ]
928 },
929 "variable_lookup": {
930 "patterns": [
931 {
932 "match": "\\b(additional_checkout_buttons|address|all_country_option_tags|all_products|article|articles|block|blog|blogs|canonical_url|cart|checkout|collection|collections|comment|content_for_additional_checkout_buttons|content_for_header|content_for_index|content_for_layout|country_option_tags|currency|current_page|current_tags|customer|customer_address|discount_allocation|discount_application|external_video|font|forloop|form|fulfillment|gift_card|handle|image|images|line_item|link|linklist|linklists|location|localization|metafield|model|model_source|order|page|page_description|page_image|page_title|pages|paginate|part|policy|powered_by_link|predictive_search|product|product_option|product_variant|recommendations|request|routes|script|scripts|search|section|selling_plan|selling_plan_allocation|selling_plan_group|settings|shipping_method|shop|shop_locale|store_availability|tablerow|tax_line|template|theme|transaction|unit_price_measurement|variant|video|video_source)\\b",
933 "name": "variable.language.liquid"
934 },
935 {
936 "match": "((?<=\\w\\:\\s)\\w+)",
937 "name": "variable.parameter.liquid"
938 },
939 {
940 "begin": "(?<=\\w)\\[",
941 "beginCaptures": {
942 "0": {
943 "name": "punctuation.section.brackets.begin.liquid"
944 }
945 },
946 "end": "\\]",
947 "endCaptures": {
948 "0": {
949 "name": "punctuation.section.brackets.end.liquid"
950 }
951 },
952 "name": "meta.brackets.liquid",
953 "patterns": [
954 {
955 "include": "#string"
956 }
957 ]
958 },
959 {
960 "match": "(?<=(\\w|\\])\\.)([-\\w]+\\??)",
961 "name": "variable.other.member.liquid"
962 },
963 {
964 "match": "(?<=\\w)\\.(?=\\w)",
965 "name": "punctuation.accessor.liquid"
966 },
967 {
968 "match": "(?i)[a-z_](\\w|(?:-(?!\\}\\})))*",
969 "name": "variable.other.liquid"
970 }
971 ]
972 }
973 }
974 }
975