tm-grammars
Version:
Collecton of TextMate grammars in JSON
1,102 lines (1,101 loc) • 27.4 kB
JSON
{
"displayName": "Liquid",
"fileTypes": [
"liquid"
],
"foldingStartMarker": "\\{%-?\\s*(capture|case|comment|form??|if|javascript|paginate|schema|style)[^%()}]+%}",
"foldingStopMarker": "\\{%\\s*(end(?:capture|case|comment|form??|if|javascript|paginate|schema|style))[^%()}]+%}",
"injections": {
"L:meta.embedded.block.js, L:meta.embedded.block.css, L:meta.embedded.block.html, L:string.quoted": {
"patterns": [
{
"include": "#injection"
}
]
}
},
"name": "liquid",
"patterns": [
{
"include": "#core"
}
],
"repository": {
"attribute": {
"begin": "\\w+:",
"beginCaptures": {
"0": {
"name": "entity.other.attribute-name.liquid"
}
},
"end": "(?=,|%}|}}|\\|)",
"patterns": [
{
"include": "#value_expression"
}
]
},
"attribute_liquid": {
"begin": "\\w+:",
"beginCaptures": {
"0": {
"name": "entity.other.attribute-name.liquid"
}
},
"end": "(?=[,|])|$",
"patterns": [
{
"include": "#value_expression"
}
]
},
"comment_block": {
"begin": "\\{%-?\\s*comment\\s*-?%}",
"end": "\\{%-?\\s*endcomment\\s*-?%}",
"name": "comment.block.liquid",
"patterns": [
{
"include": "#comment_block"
},
{
"match": "(.(?!\\{%-?\\s*((?:|end)comment)\\s*-?%}))*."
}
]
},
"core": {
"patterns": [
{
"include": "#raw_tag"
},
{
"include": "#doc_tag"
},
{
"include": "#comment_block"
},
{
"include": "#style_codefence"
},
{
"include": "#stylesheet_codefence"
},
{
"include": "#json_codefence"
},
{
"include": "#javascript_codefence"
},
{
"include": "#object"
},
{
"include": "#tag"
},
{
"include": "text.html.basic"
}
]
},
"doc_tag": {
"begin": "\\{%-?\\s*(doc)\\s*-?%}",
"beginCaptures": {
"0": {
"name": "meta.tag.liquid"
},
"1": {
"name": "entity.name.tag.doc.liquid"
}
},
"contentName": "comment.block.documentation.liquid",
"end": "\\{%-?\\s*(enddoc)\\s*-?%}",
"endCaptures": {
"0": {
"name": "meta.tag.liquid"
},
"1": {
"name": "entity.name.tag.doc.liquid"
}
},
"name": "meta.block.doc.liquid",
"patterns": [
{
"include": "#liquid_doc_description_tag"
},
{
"include": "#liquid_doc_param_tag"
},
{
"include": "#liquid_doc_example_tag"
},
{
"include": "#liquid_doc_prompt_tag"
},
{
"include": "#liquid_doc_fallback_tag"
}
]
},
"filter": {
"captures": {
"1": {
"name": "support.function.liquid"
}
},
"match": "\\|\\s*((?![.0-9])[-0-9A-Z_a-z]+:?)\\s*"
},
"injection": {
"patterns": [
{
"include": "#raw_tag"
},
{
"include": "#comment_block"
},
{
"include": "#object"
},
{
"include": "#tag_injection"
}
]
},
"invalid_range": {
"match": "\\((.(?!\\.\\.))+\\)",
"name": "invalid.illegal.range.liquid"
},
"javascript_codefence": {
"begin": "(\\{%-?)\\s*(javascript)\\s*(-?%})",
"beginCaptures": {
"0": {
"name": "meta.tag.metadata.javascript.start.liquid"
},
"1": {
"name": "punctuation.definition.tag.begin.liquid"
},
"2": {
"name": "entity.name.tag.javascript.liquid"
},
"3": {
"name": "punctuation.definition.tag.begin.liquid"
}
},
"contentName": "meta.embedded.block.js",
"end": "(\\{%-?)\\s*(endjavascript)\\s*(-?%})",
"endCaptures": {
"0": {
"name": "meta.tag.metadata.javascript.end.liquid"
},
"1": {
"name": "punctuation.definition.tag.end.liquid"
},
"2": {
"name": "entity.name.tag.javascript.liquid"
},
"3": {
"name": "punctuation.definition.tag.end.liquid"
}
},
"name": "meta.block.javascript.liquid",
"patterns": [
{
"include": "source.js"
}
]
},
"json_codefence": {
"begin": "(\\{%-?)\\s*(schema)\\s*(-?%})",
"beginCaptures": {
"0": {
"name": "meta.tag.metadata.schema.start.liquid"
},
"1": {
"name": "punctuation.definition.tag.begin.liquid"
},
"2": {
"name": "entity.name.tag.schema.liquid"
},
"3": {
"name": "punctuation.definition.tag.begin.liquid"
}
},
"contentName": "meta.embedded.block.json",
"end": "(\\{%-?)\\s*(endschema)\\s*(-?%})",
"endCaptures": {
"0": {
"name": "meta.tag.metadata.schema.end.liquid"
},
"1": {
"name": "punctuation.definition.tag.end.liquid"
},
"2": {
"name": "entity.name.tag.schema.liquid"
},
"3": {
"name": "punctuation.definition.tag.end.liquid"
}
},
"name": "meta.block.schema.liquid",
"patterns": [
{
"include": "source.json"
}
]
},
"language_constant": {
"match": "\\b(false|true|nil|blank)\\b|empty(?!\\?)",
"name": "constant.language.liquid"
},
"liquid_doc_description_tag": {
"begin": "(@description)\\b\\s*",
"beginCaptures": {
"0": {
"name": "comment.block.documentation.liquid"
},
"1": {
"name": "storage.type.class.liquid"
}
},
"contentName": "string.quoted.single.liquid",
"end": "(?=@prompt|@example|@param|@description|\\{%-?\\s*enddoc\\s*-?%})"
},
"liquid_doc_example_tag": {
"begin": "(@example)\\b\\s*",
"beginCaptures": {
"0": {
"name": "comment.block.documentation.liquid"
},
"1": {
"name": "storage.type.class.liquid"
}
},
"contentName": "meta.embedded.block.liquid",
"end": "(?=@prompt|@example|@param|@description|\\{%-?\\s*enddoc\\s*-?%})",
"patterns": [
{
"include": "#core"
}
]
},
"liquid_doc_fallback_tag": {
"captures": {
"1": {
"name": "comment.block.liquid"
}
},
"match": "(@\\w+)\\b"
},
"liquid_doc_param_tag": {
"captures": {
"1": {
"name": "storage.type.class.liquid"
},
"2": {
"name": "entity.name.type.instance.liquid"
},
"3": {
"name": "variable.other.liquid"
},
"4": {
"name": "string.quoted.single.liquid"
}
},
"match": "(@param)\\s+(?:(\\{[^}]*}?)\\s+)?(\\[?[A-Z_a-z][-\\w]*]?)?(?:\\s+(.*))?"
},
"liquid_doc_prompt_tag": {
"begin": "(@prompt)\\b\\s*",
"beginCaptures": {
"0": {
"name": "comment.block.documentation.liquid"
},
"1": {
"name": "storage.type.class.liquid"
}
},
"contentName": "string.quoted.single.liquid",
"end": "(?=@prompt|@example|@param|@description|\\{%-?\\s*enddoc\\s*-?%})"
},
"number": {
"match": "(([-+])\\s*)?[0-9]+(\\.[0-9]+)?",
"name": "constant.numeric.liquid"
},
"object": {
"begin": "(?