WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 3dc4b20

Browse files
Add support for LiquidDoc (#20)
This commit adds basic support for LiquidDoc and the `{% doc %}` / `{% enddoc %}` tags. https://shopify.dev/docs/storefronts/themes/tools/liquid-doc https://shopify.dev/docs/api/liquid/tags/theme-tags#doc
1 parent 8cb72f6 commit 3dc4b20

File tree

3 files changed

+157
-0
lines changed

3 files changed

+157
-0
lines changed

Syntaxes/Liquid.sublime-syntax

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ contexts:
2626

2727
liquid-tags:
2828
- include: jekyll-highlight-tags
29+
- include: liquid-doc-tags
2930
- include: liquid-comment-tags
3031
- include: liquid-schema-tags
3132
- include: liquid-javascript-tags
@@ -70,6 +71,42 @@ contexts:
7071
3: punctuation.section.embedded.end.liquid
7172
pop: 1
7273

74+
###[ LIQUID DOC TAGS ]####################################################
75+
76+
liquid-doc-tags:
77+
# https://shopify.dev/docs/api/liquid/tags/theme-tags#doc
78+
- match: ({%-?)\s*(doc)\s*(-?%})
79+
scope: meta.statement.liquid
80+
captures:
81+
1: punctuation.section.embedded.begin.liquid
82+
2: keyword.declaration.comment.liquid
83+
3: punctuation.section.embedded.end.liquid
84+
push: liquid-doc-tag-body
85+
86+
liquid-doc-tag-body:
87+
- meta_scope: meta.embedded.liquid source.liquid
88+
- meta_content_scope: comment.block.documentation.liquid
89+
- match: ({%-?)\s*(enddoc)\s*(-?%})
90+
scope: meta.statement.liquid
91+
captures:
92+
1: punctuation.section.embedded.begin.liquid
93+
2: keyword.declaration.comment.liquid
94+
3: punctuation.section.embedded.end.liquid
95+
pop: 1
96+
- match: '@description\b'
97+
scope: entity.name.tag.documentation.liquid
98+
- match: '(@param)\s+(({){{liquid_variables}}(}))\s+(\[?{{liquid_variables}}\]?)'
99+
captures:
100+
1: entity.name.tag.documentation.liquid
101+
2: storage.type.liquid
102+
3: punctuation.definition.type.begin.liquid
103+
4: punctuation.definition.type.end.liquid
104+
5: variable.other.liquid
105+
- match: '@example\b'
106+
scope: entity.name.tag.documentation.liquid
107+
embed: scope:text.html.liquid
108+
escape: (?=@example\b|{%-?\s*enddoc\s*-?%})
109+
73110
###[ LIQUID JAVASCRIPT TAGS ]##################################################
74111

75112
liquid-javascript-tags:

tests/syntax_test_liquid.liquid.html

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,66 @@
438438
| ^^^^^^^^^^ keyword.declaration.comment.liquid
439439
| ^^ punctuation.section.embedded.end.liquid
440440

441+
{% doc %}
442+
| <- meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
443+
|^^^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid
444+
|^ punctuation.section.embedded.begin.liquid
445+
| ^^^ keyword.declaration.comment.liquid
446+
| ^^ punctuation.section.embedded.end.liquid
447+
448+
@description This will display a product title
449+
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
450+
| ^^^^^^^^^^^^ entity.name.tag.documentation.liquid
451+
452+
@param {product} product The product to display the title for
453+
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
454+
| ^^^^^^ entity.name.tag.documentation.liquid
455+
| ^^^^^^^^^ storage.type.liquid
456+
| ^ punctuation.definition.type.begin.liquid
457+
| ^ punctuation.definition.type.end.liquid
458+
| ^^^^^^^ variable.other.liquid
459+
460+
@example
461+
|^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
462+
| ^^^^^^^^ entity.name.tag.documentation.liquid
463+
<div class={{ var | filter }}></div>
464+
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
465+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.block
466+
| ^ punctuation.definition.tag.begin.html
467+
| ^^^ entity.name.tag
468+
| ^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class.html
469+
| ^^^^^ entity.other.attribute-name.class.html
470+
| ^ punctuation.separator.key-value.html
471+
| ^^^^^^^^^^^^^^^^^^ meta.class-name.html meta.string.html meta.interpolation.liquid
472+
| ^^ punctuation.section.interpolation.begin.liquid
473+
| ^^^^^^^^^^^^^^ source.liquid
474+
| ^^^ variable.other.liquid
475+
| ^^^^^^^^ meta.filter.liquid
476+
| ^ keyword.operator.logical.pipe.liquid
477+
| ^^^^^^ support.function.filter.liquid
478+
| ^^ punctuation.section.interpolation.end.liquid
479+
| ^ punctuation.definition.tag.end.html
480+
| ^^ punctuation.definition.tag.begin.html
481+
| ^^^ entity.name.tag
482+
| ^ punctuation.definition.tag.end.html
483+
484+
@example
485+
| ^^^^^^^^ entity.name.tag.documentation.liquid
486+
{% render 'price' %}
487+
|^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
488+
| ^^ punctuation.section.embedded.begin.liquid
489+
| ^^^^^^ support.function.liquid
490+
| ^^^^^^^ meta.string.liquid string.quoted.single.liquid
491+
| ^ punctuation.definition.string.begin.liquid
492+
| ^ punctuation.definition.string.end.liquid
493+
| ^^ punctuation.section.embedded.end.liquid
494+
495+
{% enddoc %}
496+
|^^^^^^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid
497+
|^ punctuation.section.embedded.begin.liquid
498+
| ^^^^^^ keyword.declaration.comment.liquid
499+
| ^^ punctuation.section.embedded.end.liquid
500+
441501
{% javascript %}
442502
| <- meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
443503
|^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid

tests/syntax_test_liquid.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,66 @@ I am {{ age }} and my favorite food is {{ favorite_food }}.
394394
| ^^^^^^^^^^ keyword.declaration.comment.liquid
395395
| ^^ punctuation.section.embedded.end.liquid
396396

397+
{% doc %}
398+
| <- meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
399+
|^^^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid
400+
|^ punctuation.section.embedded.begin.liquid
401+
| ^^^ keyword.declaration.comment.liquid
402+
| ^^ punctuation.section.embedded.end.liquid
403+
404+
@description This will display a product title
405+
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
406+
| ^^^^^^^^^^^^ entity.name.tag.documentation.liquid
407+
408+
@param {product} product The product to display the title for
409+
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
410+
| ^^^^^^ entity.name.tag.documentation.liquid
411+
| ^^^^^^^^^ storage.type.liquid
412+
| ^ punctuation.definition.type.begin.liquid
413+
| ^ punctuation.definition.type.end.liquid
414+
| ^^^^^^^ variable.other.liquid
415+
416+
@example
417+
|^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
418+
| ^^^^^^^^ entity.name.tag.documentation.liquid
419+
<div class={{ var | filter }}></div>
420+
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
421+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.block
422+
| ^ punctuation.definition.tag.begin.html
423+
| ^^^ entity.name.tag
424+
| ^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class.html
425+
| ^^^^^ entity.other.attribute-name.class.html
426+
| ^ punctuation.separator.key-value.html
427+
| ^^^^^^^^^^^^^^^^^^ meta.class-name.html meta.string.html meta.interpolation.liquid
428+
| ^^ punctuation.section.interpolation.begin.liquid
429+
| ^^^^^^^^^^^^^^ source.liquid
430+
| ^^^ variable.other.liquid
431+
| ^^^^^^^^ meta.filter.liquid
432+
| ^ keyword.operator.logical.pipe.liquid
433+
| ^^^^^^ support.function.filter.liquid
434+
| ^^ punctuation.section.interpolation.end.liquid
435+
| ^ punctuation.definition.tag.end.html
436+
| ^^ punctuation.definition.tag.begin.html
437+
| ^^^ entity.name.tag
438+
| ^ punctuation.definition.tag.end.html
439+
440+
@example
441+
| ^^^^^^^^ entity.name.tag.documentation.liquid
442+
{% render 'price' %}
443+
|^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
444+
| ^^ punctuation.section.embedded.begin.liquid
445+
| ^^^^^^ support.function.liquid
446+
| ^^^^^^^ meta.string.liquid string.quoted.single.liquid
447+
| ^ punctuation.definition.string.begin.liquid
448+
| ^ punctuation.definition.string.end.liquid
449+
| ^^ punctuation.section.embedded.end.liquid
450+
451+
{% enddoc %}
452+
|^^^^^^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid
453+
|^ punctuation.section.embedded.begin.liquid
454+
| ^^^^^^ keyword.declaration.comment.liquid
455+
| ^^ punctuation.section.embedded.end.liquid
456+
397457
{% javascript %}
398458
| <- meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
399459
|^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid

0 commit comments

Comments
 (0)