{ "$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": "", "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": "()", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.native-markup" } }, "patterns": [ { "include": "#tag-innards" } ] }, "tag": { "name": "meta.tag.native-markup", "begin": "()", "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" } ] } } }