Skip to content

Commit a10c464

Browse files
committed
Directly implement LiquidDoc
1 parent 1643624 commit a10c464

4 files changed

Lines changed: 131 additions & 59 deletions

File tree

Syntaxes/Liquid.sublime-syntax

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,36 @@ contexts:
7676
liquid-doc-tags:
7777
# https://shopify.dev/docs/api/liquid/tags/theme-tags#doc
7878
- match: ({%-?)\s*(doc)\s*(-?%})
79-
scope: meta.embedded.liquid source.liquid meta.statement.liquid
79+
scope: meta.statement.liquid
8080
captures:
8181
1: punctuation.section.embedded.begin.liquid
82-
2: keyword.declaration.raw.liquid
82+
2: keyword.declaration.comment.liquid
8383
3: punctuation.section.embedded.end.liquid
84-
embed: scope:source.liquiddoc
85-
embed_scope: source.embedded.liquiddoc
86-
escape: ({%-?)\s*(enddoc)\s*(-?%})
87-
escape_captures:
88-
0: meta.embedded.liquid source.liquid meta.statement.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:
8992
1: punctuation.section.embedded.begin.liquid
90-
2: keyword.declaration.raw.liquid
93+
2: keyword.declaration.comment.liquid
9194
3: punctuation.section.embedded.end.liquid
9295
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*-?%})
93109

94110
###[ LIQUID JAVASCRIPT TAGS ]##################################################
95111

Syntaxes/LiquidDoc.sublime-syntax

Lines changed: 0 additions & 30 deletions
This file was deleted.

tests/syntax_test_liquid.liquid.html

Lines changed: 47 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -442,35 +442,61 @@
442442
| <- meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
443443
|^^^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid
444444
|^ punctuation.section.embedded.begin.liquid
445-
| ^^^ keyword.declaration.raw.liquid
445+
| ^^^ keyword.declaration.comment.liquid
446446
| ^^ punctuation.section.embedded.end.liquid
447-
Displays a product title
448-
| <- source.embedded.liquiddoc comment.liquiddoc
449-
|^^^^^^^^^^^^^^^^^^^^^^^^^ source.embedded.liquiddoc comment.liquiddoc
450447

451448
@description This will display a product title
452-
| <- source.embedded.liquiddoc comment.liquiddoc
453-
| ^^^^^^^^^^^^ source.embedded.liquiddoc keyword.liquiddoc
454-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.embedded.liquiddoc comment.liquiddoc
449+
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.embedded.liquid source.liquid comment.block.documentation.liquid
450+
| ^^^^^^^^^^^^ entity.name.tag.documentation.liquid
455451

456452
@param {product} product The product to display the title for
457-
| <- source.embedded.liquiddoc comment.liquiddoc
458-
| ^^^^^^ source.embedded.liquiddoc keyword.liquiddoc
459-
| ^^^^^^^^^ source.embedded.liquiddoc storage.type.liquiddoc
460-
| ^^^^^^^ source.embedded.liquiddoc variable.liquiddoc
461-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.embedded.liquiddoc comment.liquiddoc
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
462483

463484
@example
464-
| <- source.embedded.liquiddoc comment.liquiddoc
465-
| ^^^^^^^^ source.embedded.liquiddoc keyword.liquiddoc
466-
{% render 'product-title', product: product %}
467-
| <- source.embedded.liquiddoc comment.liquiddoc
468-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.embedded.liquiddoc comment.liquiddoc
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+
469495
{% enddoc %}
470-
| <- meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
471-
|^ meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
472-
| ^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid keyword.declaration.raw.liquid
473-
| ^^ meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.end.liquid
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
474500

475501
{% javascript %}
476502
| <- meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.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)