119 lines
3.5 KiB
JSON
119 lines
3.5 KiB
JSON
{
|
|
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
|
|
"name": "Native markup",
|
|
"scopeName": "source.native-markup",
|
|
"patterns": [
|
|
{ "include": "#comment" },
|
|
{ "include": "#structure-tag" },
|
|
{ "include": "#tag" },
|
|
{ "include": "#expression" }
|
|
],
|
|
"repository": {
|
|
"comment": {
|
|
"name": "comment.block.native-markup",
|
|
"begin": "<!--",
|
|
"end": "-->",
|
|
"beginCaptures": {
|
|
"0": { "name": "punctuation.definition.comment.begin.native-markup" }
|
|
},
|
|
"endCaptures": {
|
|
"0": { "name": "punctuation.definition.comment.end.native-markup" }
|
|
}
|
|
},
|
|
"structure-tag": {
|
|
"name": "meta.tag.structure.native-markup",
|
|
"begin": "(</?)(for|if|else)(?![a-z0-9_-])",
|
|
"beginCaptures": {
|
|
"1": { "name": "punctuation.definition.tag.begin.native-markup" },
|
|
"2": { "name": "keyword.control.structure.native-markup" }
|
|
},
|
|
"end": "(/?>)",
|
|
"endCaptures": {
|
|
"1": { "name": "punctuation.definition.tag.end.native-markup" }
|
|
},
|
|
"patterns": [
|
|
{ "include": "#tag-innards" }
|
|
]
|
|
},
|
|
"tag": {
|
|
"name": "meta.tag.native-markup",
|
|
"begin": "(</?)([a-z][a-z0-9_-]*)",
|
|
"beginCaptures": {
|
|
"1": { "name": "punctuation.definition.tag.begin.native-markup" },
|
|
"2": { "name": "entity.name.tag.native-markup" }
|
|
},
|
|
"end": "(/?>)",
|
|
"endCaptures": {
|
|
"1": { "name": "punctuation.definition.tag.end.native-markup" }
|
|
},
|
|
"patterns": [
|
|
{ "include": "#tag-innards" }
|
|
]
|
|
},
|
|
"tag-innards": {
|
|
"patterns": [
|
|
{ "include": "#event-attribute" },
|
|
{ "include": "#attribute" },
|
|
{ "include": "#string" }
|
|
]
|
|
},
|
|
"event-attribute": {
|
|
"match": "(on-[a-z][a-z0-9_-]*)\\s*(=)?",
|
|
"captures": {
|
|
"1": { "name": "entity.other.attribute-name.event.native-markup" },
|
|
"2": { "name": "punctuation.separator.key-value.native-markup" }
|
|
}
|
|
},
|
|
"attribute": {
|
|
"match": "([a-z][a-z0-9_-]*)\\s*(=)?",
|
|
"captures": {
|
|
"1": { "name": "entity.other.attribute-name.native-markup" },
|
|
"2": { "name": "punctuation.separator.key-value.native-markup" }
|
|
}
|
|
},
|
|
"string": {
|
|
"name": "string.quoted.double.native-markup",
|
|
"begin": "\"",
|
|
"end": "\"",
|
|
"beginCaptures": {
|
|
"0": { "name": "punctuation.definition.string.begin.native-markup" }
|
|
},
|
|
"endCaptures": {
|
|
"0": { "name": "punctuation.definition.string.end.native-markup" }
|
|
},
|
|
"patterns": [
|
|
{ "include": "#expression" },
|
|
{
|
|
"match": "(:)",
|
|
"name": "punctuation.separator.message-payload.native-markup"
|
|
}
|
|
]
|
|
},
|
|
"expression": {
|
|
"name": "meta.embedded.expression.native-markup",
|
|
"begin": "\\{",
|
|
"end": "\\}",
|
|
"beginCaptures": {
|
|
"0": { "name": "punctuation.section.embedded.begin.native-markup" }
|
|
},
|
|
"endCaptures": {
|
|
"0": { "name": "punctuation.section.embedded.end.native-markup" }
|
|
},
|
|
"patterns": [
|
|
{
|
|
"match": "==",
|
|
"name": "keyword.operator.comparison.native-markup"
|
|
},
|
|
{
|
|
"match": "[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*",
|
|
"name": "variable.other.binding.native-markup"
|
|
},
|
|
{
|
|
"match": "\\.",
|
|
"name": "punctuation.accessor.native-markup"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|