Skip to content

Commit 8f22022

Browse files
Add support for LiquidDoc
Fix syntax
1 parent 38828e5 commit 8f22022

File tree

3 files changed

+86
-0
lines changed

3 files changed

+86
-0
lines changed

Syntaxes/Liquid.sublime-syntax

Lines changed: 21 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
@@ -69,6 +70,26 @@ contexts:
6970
3: punctuation.section.embedded.end.liquid
7071
pop: 1
7172

73+
###[ LIQUID DOC TAGS ]####################################################
74+
75+
liquid-doc-tags:
76+
# https://shopify.dev/docs/api/liquid/tags/theme-tags#doc
77+
- match: ({%-?)\s*(doc)\s*(-?%})
78+
scope: meta.embedded.liquid source.liquid meta.statement.liquid
79+
captures:
80+
1: punctuation.section.embedded.begin.liquid
81+
2: keyword.declaration.raw.liquid
82+
3: punctuation.section.embedded.end.liquid
83+
embed: scope:source.liquiddoc
84+
embed_scope: source.embedded.liquiddoc
85+
escape: ({%-?)\s*(enddoc)\s*(-?%})
86+
escape_captures:
87+
0: meta.embedded.liquid source.liquid meta.statement.liquid
88+
1: punctuation.section.embedded.begin.liquid
89+
2: keyword.declaration.raw.liquid
90+
3: punctuation.section.embedded.end.liquid
91+
pop: 1
92+
7293
###[ LIQUID JAVASCRIPT TAGS ]##################################################
7394

7495
liquid-javascript-tags:

Syntaxes/LiquidDoc.sublime-syntax

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
%YAML 1.2
2+
---
3+
# https://shopify.github.io/liquid
4+
# https://shopify.dev/api/liquid
5+
# https://shopify.dev/docs/storefronts/themes/tools/liquid-doc
6+
# http://www.sublimetext.com/docs/syntax.html
7+
name: LiquidDoc
8+
scope: source.liquiddoc
9+
version: 2
10+
hidden: true
11+
12+
variables:
13+
liquid_variables: \b[a-zA-Z_][0-9a-zA-Z_]*\b
14+
15+
16+
contexts:
17+
main:
18+
- match: '@description'
19+
scope: keyword.liquiddoc
20+
21+
- match: '(@param)\s+({[a-z]+})\s+(\[?{{liquid_variables}}\]?)'
22+
captures:
23+
1: keyword.liquiddoc
24+
2: storage.type.liquiddoc
25+
3: variable.liquiddoc
26+
27+
- match: '@example'
28+
scope: keyword.liquiddoc
29+
30+
- match: '.'
31+
scope: comment.liquiddoc

tests/syntax_test_liquid.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,40 @@ div {
559559
| ^^ punctuation.section.embedded.end.liquid
560560

561561

562+
{% doc %}
563+
| <- meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
564+
|^^^^^^^^ meta.embedded.liquid source.liquid meta.statement.liquid
565+
|^ punctuation.section.embedded.begin.liquid
566+
| ^^^ keyword.declaration.raw.liquid
567+
| ^^ punctuation.section.embedded.end.liquid
568+
Displays a product title
569+
| <- text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
570+
|^^^^^^^^^^^^^^^^^^^^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
571+
572+
@description This will display a product title
573+
| <- text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
574+
| ^^^^^^^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc keyword.liquiddoc
575+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
576+
577+
@param {product} product The product to display the title for
578+
| <- text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
579+
| ^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc keyword.liquiddoc
580+
| ^^^^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc storage.type.liquiddoc
581+
| ^^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc variable.liquiddoc
582+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
583+
584+
@example
585+
| <- text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
586+
| ^^^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc keyword.liquiddoc
587+
{% render 'product-title', product: product %}
588+
| <- text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
589+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ text.html.liquid meta.template.liquid source.embedded.liquiddoc comment.liquiddoc
590+
{% enddoc %}
591+
| <- text.html.liquid meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
592+
|^ text.html.liquid meta.template.liquid meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.begin.liquid
593+
| ^^^^^^ text.html.liquid meta.embedded.liquid source.liquid meta.statement.liquid keyword.declaration.raw.liquid
594+
| ^^ text.html.liquid meta.embedded.liquid source.liquid meta.statement.liquid punctuation.section.embedded.end.liquid
595+
562596
<!--
563597
--- Test Objects
564598
-->

0 commit comments

Comments
 (0)