@wooorm/starry-night
Version:
Syntax highlighting, like GitHub
798 lines (795 loc) • 28.2 kB
JavaScript
// This is a TextMate grammar distributed by `starry-night`.
// This grammar is developed at
// <https://github.com/lifeart/vsc-ember-syntax>
// and licensed `mit`.
// See <https://github.com/wooorm/starry-night> for more info.
/**
* @import {Grammar} from '@wooorm/starry-night'
*/
/** @type {Grammar} */
const grammar = {
dependencies: ['source.ts'],
extensions: [],
injections: {
'L:source.gts -comment -(string -meta.embedded)': {
patterns: [{include: '#main'}]
}
},
names: ['glimmer-ts'],
patterns: [{include: '#main'}, {include: 'source.ts'}],
repository: {
'as-keyword': {match: '\\s\\b(as)\\b(?=\\s\\|)', name: 'keyword.control'},
'as-params': {
begin: '(?<!\\|)(\\|)',
beginCaptures: {
1: {name: 'constant.other.symbol.begin.ember-handlebars'}
},
end: '(\\|)(?!\\|)',
endCaptures: {1: {name: 'constant.other.symbol.end.ember-handlebars'}},
name: 'keyword.block-params.ember-handlebars',
patterns: [{include: '#variable'}]
},
attention: {
match:
'@?(TODO|FIXME|CHANGED|XXX|IDEA|HACK|NOTE|REVIEW|NB|BUG|QUESTION|TEMP)\\b',
name: 'storage.type.class.${1:/downcase}'
},
boolean: {
captures: {
0: {name: 'string.regexp'},
1: {name: 'string.regexp'},
2: {name: 'string.regexp'}
},
match: 'true|false|undefined|null'
},
'component-tag': {
begin: '(<\\/?)(@|this.)?([a-zA-Z0-9-_\\$:\\.]+)\\b',
beginCaptures: {
1: {name: 'punctuation.definition.tag'},
2: {
name: 'support.function',
patterns: [
{match: '(@|this)', name: 'variable.language'},
{match: '(\\.)+', name: 'punctuation.definition.tag'}
]
},
3: {
name: 'entity.name.type',
patterns: [
{include: '#glimmer-component-path'},
{match: '(@|:|\\$)', name: 'markup.bold'}
]
}
},
end: '(\\/?)(>)',
endCaptures: {
1: {name: 'punctuation.definition.tag'},
2: {name: 'punctuation.definition.tag'}
},
name: 'meta.tag.any.ember-handlebars',
patterns: [{include: '#tag-like-content'}]
},
digit: {
captures: {
0: {name: 'constant.numeric'},
1: {name: 'constant.numeric'},
2: {name: 'constant.numeric'}
},
match: '\\d*(\\.)?\\d+'
},
entities: {
patterns: [
{
captures: {
1: {name: 'punctuation.definition.entity.html.ember-handlebars'},
3: {name: 'punctuation.definition.entity.html.ember-handlebars'}
},
match: '(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)',
name: 'constant.character.entity.html.ember-handlebars'
},
{
match: '&',
name: 'invalid.illegal.bad-ampersand.html.ember-handlebars'
}
]
},
'glimmer-argument': {
captures: {
1: {
name: 'entity.other.attribute-name.ember-handlebars.argument',
patterns: [{match: '(@)', name: 'markup.italic'}]
},
2: {name: 'punctuation.separator.key-value.html.ember-handlebars'}
},
match: '\\s(@[a-zA-Z0-9:_.-]+)(=)?'
},
'glimmer-as-stuff': {
patterns: [{include: '#as-keyword'}, {include: '#as-params'}]
},
'glimmer-block': {
begin: '({{~?)(#|/)(([@\\$a-zA-Z0-9_/.-]+))',
captures: {
1: {name: 'punctuation.definition.tag'},
2: {name: 'punctuation.definition.tag'},
3: {
name: 'keyword.control',
patterns: [
{include: '#glimmer-component-path'},
{match: '(\\/)+', name: 'punctuation.definition.tag'},
{match: '(\\.)+', name: 'punctuation.definition.tag'}
]
}
},
end: '(~?}})',
name: 'entity.expression.ember-handlebars',
patterns: [
{include: '#glimmer-as-stuff'},
{include: '#glimmer-supexp-content'}
]
},
'glimmer-bools': {
captures: {
0: {name: 'keyword.operator'},
1: {name: 'keyword.operator'},
2: {name: 'string.regexp'},
3: {name: 'string.regexp'},
4: {name: 'keyword.operator'}
},
match: '({{~?)(true|false|null|undefined|\\d*(\\.)?\\d+)(~?}})',
name: 'entity.expression.ember-handlebars'
},
'glimmer-comment-block': {
begin: '{{!--',
captures: {0: {name: 'punctuation.definition.block.comment.glimmer'}},
end: '--}}',
name: 'comment.block.glimmer',
patterns: [{include: '#script'}, {include: '#attention'}]
},
'glimmer-comment-inline': {
begin: '{{!',
captures: {0: {name: 'punctuation.definition.block.comment.glimmer'}},
end: '}}',
name: 'comment.inline.glimmer',
patterns: [{include: '#script'}, {include: '#attention'}]
},
'glimmer-component-path': {
captures: {1: {name: 'punctuation.definition.tag'}},
match: '(::|_|\\$|\\.)'
},
'glimmer-control-expression': {
begin: '({{~?)(([-a-zA-Z_0-9/]+)\\s)',
captures: {
1: {name: 'keyword.operator'},
2: {name: 'keyword.operator'},
3: {name: 'keyword.control'}
},
end: '(~?}})',
name: 'entity.expression.ember-handlebars',
patterns: [{include: '#glimmer-supexp-content'}]
},
'glimmer-else-block': {
captures: {
0: {name: 'punctuation.definition.tag'},
1: {name: 'punctuation.definition.tag'},
2: {name: 'keyword.control'},
3: {
name: 'keyword.control',
patterns: [
{include: '#glimmer-subexp'},
{include: '#string-single-quoted-handlebars'},
{include: '#string-double-quoted-handlebars'},
{include: '#boolean'},
{include: '#digit'},
{include: '#param'},
{include: '#glimmer-parameter-name'},
{include: '#glimmer-parameter-value'}
]
},
4: {name: 'punctuation.definition.tag'}
},
match: '({{~?)(else\\s[a-z]+\\s|else)([()@a-zA-Z0-9\\.\\s\\b]+)?(~?}})',
name: 'entity.expression.ember-handlebars'
},
'glimmer-expression': {
begin: '({{~?)(([()\\s@a-zA-Z0-9_.-]+))',
captures: {
1: {name: 'keyword.operator'},
2: {name: 'keyword.operator'},
3: {
name: 'support.function',
patterns: [
{match: '[(]+', name: 'string.regexp'},
{match: '[)]+', name: 'string.regexp'},
{match: '(\\.)+', name: 'punctuation.definition.tag'},
{include: '#glimmer-supexp-content'}
]
}
},
end: '(~?}})',
name: 'entity.expression.ember-handlebars',
patterns: [{include: '#glimmer-supexp-content'}]
},
'glimmer-expression-property': {
begin: '({{~?)((@|this.)([a-zA-Z0-9_.-]+))',
captures: {
1: {name: 'keyword.operator'},
2: {name: 'keyword.operator'},
3: {
name: 'support.function',
patterns: [
{match: '(@|this)', name: 'variable.language'},
{match: '(\\.)+', name: 'punctuation.definition.tag'}
]
},
4: {
name: 'support.function',
patterns: [{match: '(\\.)+', name: 'punctuation.definition.tag'}]
}
},
end: '(~?}})',
name: 'entity.expression.ember-handlebars',
patterns: [{include: '#glimmer-supexp-content'}]
},
'glimmer-parameter-name': {
captures: {
1: {name: 'variable.parameter.name.ember-handlebars'},
2: {name: 'punctuation.definition.expression.ember-handlebars'}
},
match: '\\b([a-zA-Z0-9_-]+)(\\s?=)'
},
'glimmer-parameter-value': {
captures: {
1: {
name: 'support.function',
patterns: [{match: '(\\.)+', name: 'punctuation.definition.tag'}]
}
},
match: '\\b([a-zA-Z0-9:_.-]+)\\b(?!=)'
},
'glimmer-special-block': {
captures: {
0: {name: 'keyword.operator'},
1: {name: 'keyword.operator'},
2: {name: 'keyword.control'},
3: {name: 'keyword.operator'}
},
match: '({{~?)(yield|outlet)(~?}})',
name: 'entity.expression.ember-handlebars'
},
'glimmer-subexp': {
begin: '(\\()([@a-zA-Z0-9.-]+)',
captures: {1: {name: 'keyword.other'}, 2: {name: 'keyword.control'}},
end: '(\\))',
name: 'entity.subexpression.ember-handlebars',
patterns: [{include: '#glimmer-supexp-content'}]
},
'glimmer-supexp-content': {
patterns: [
{include: '#glimmer-subexp'},
{include: '#string-single-quoted-handlebars'},
{include: '#string-double-quoted-handlebars'},
{include: '#boolean'},
{include: '#digit'},
{include: '#param'},
{include: '#glimmer-parameter-name'},
{include: '#glimmer-parameter-value'}
]
},
'glimmer-unescaped-expression': {
begin: '{{{',
captures: {0: {name: 'keyword.operator'}},
end: '}}}',
name: 'entity.unescaped.expression.ember-handlebars',
patterns: [
{include: '#string-single-quoted-handlebars'},
{include: '#string-double-quoted-handlebars'},
{include: '#glimmer-subexp'},
{include: '#param'}
]
},
'html-attribute': {
captures: {
1: {
name: 'entity.other.attribute-name.ember-handlebars',
patterns: [{match: '(\\.\\.\\.attributes)', name: 'markup.bold'}]
},
2: {name: 'punctuation.separator.key-value.html.ember-handlebars'}
},
match: '\\s([a-zA-Z0-9:_.-]+)(=)?'
},
'html-comment': {
begin: '<!--',
captures: {
0: {name: 'punctuation.definition.comment.html.ember-handlebars'}
},
end: '--\\s*>',
name: 'comment.block.html.ember-handlebars',
patterns: [
{include: '#attention'},
{
match: '--',
name: 'invalid.illegal.bad-comments-or-CDATA.html.ember-handlebars'
}
]
},
'html-tag': {
begin: '(<\\/?)([a-z0-9-]+)(?!\\.|:)\\b',
beginCaptures: {
1: {name: 'punctuation.definition.tag'},
2: {name: 'entity.name.tag.html.ember-handlebars'}
},
end: '(\\/?)(>)',
endCaptures: {
1: {name: 'punctuation.definition.tag'},
2: {name: 'punctuation.definition.tag'}
},
name: 'meta.tag.any.ember-handlebars',
patterns: [{include: '#tag-like-content'}]
},
main: {
patterns: [
{
begin: '\\s*(<)(template)\\s*(>)',
beginCaptures: {
1: {name: 'punctuation.definition.tag.html'},
2: {name: 'entity.name.tag.other.html'},
3: {name: 'punctuation.definition.tag.html'}
},
end: '(</)(template)(>)',
endCaptures: {
1: {name: 'punctuation.definition.tag.html'},
2: {name: 'entity.name.tag.other.html'},
3: {name: 'punctuation.definition.tag.html'}
},
name: 'meta.js.embeddedTemplateWithoutArgs',
patterns: [
{include: '#style'},
{include: '#script'},
{include: '#glimmer-else-block'},
{include: '#glimmer-bools'},
{include: '#glimmer-special-block'},
{include: '#glimmer-unescaped-expression'},
{include: '#glimmer-comment-block'},
{include: '#glimmer-comment-inline'},
{include: '#glimmer-expression-property'},
{include: '#glimmer-control-expression'},
{include: '#glimmer-expression'},
{include: '#glimmer-block'},
{include: '#html-tag'},
{include: '#component-tag'},
{include: '#html-comment'},
{include: '#entities'}
]
},
{
begin: '(<)(template)',
beginCaptures: {
1: {name: 'punctuation.definition.tag.html'},
2: {name: 'entity.name.tag.other.html'}
},
end: '(</)(template)(>)',
endCaptures: {
1: {name: 'punctuation.definition.tag.html'},
2: {name: 'entity.name.tag.other.html'},
3: {name: 'punctuation.definition.tag.html'}
},
name: 'meta.js.embeddedTemplateWithArgs',
patterns: [
{
begin: '(?<=\\<template)',
end: '(?=\\>)',
patterns: [{include: '#tag-like-content'}]
},
{
begin: '(>)',
beginCaptures: {1: {name: 'punctuation.definition.tag.end.js'}},
contentName: 'meta.html.embedded.block',
end: '(?=</template>)',
patterns: [
{include: '#style'},
{include: '#script'},
{include: '#glimmer-else-block'},
{include: '#glimmer-bools'},
{include: '#glimmer-special-block'},
{include: '#glimmer-unescaped-expression'},
{include: '#glimmer-comment-block'},
{include: '#glimmer-comment-inline'},
{include: '#glimmer-expression-property'},
{include: '#glimmer-control-expression'},
{include: '#glimmer-expression'},
{include: '#glimmer-block'},
{include: '#html-tag'},
{include: '#component-tag'},
{include: '#html-comment'},
{include: '#entities'}
]
}
]
},
{
begin: '(?x)(\\b(?:\\w+\\.)*(?:hbs|html)\\s*)(`)',
beginCaptures: {
1: {name: 'entity.name.function.tagged-template.js'},
2: {name: 'punctuation.definition.string.template.begin.js'}
},
contentName: 'meta.embedded.block.html',
end: '(`)',
endCaptures: {
0: {name: 'string.js'},
1: {name: 'punctuation.definition.string.template.end.js'}
},
patterns: [
{include: 'source.ts#template-substitution-element'},
{include: '#style'},
{include: '#script'},
{include: '#glimmer-else-block'},
{include: '#glimmer-bools'},
{include: '#glimmer-special-block'},
{include: '#glimmer-unescaped-expression'},
{include: '#glimmer-comment-block'},
{include: '#glimmer-comment-inline'},
{include: '#glimmer-expression-property'},
{include: '#glimmer-control-expression'},
{include: '#glimmer-expression'},
{include: '#glimmer-block'},
{include: '#html-tag'},
{include: '#component-tag'},
{include: '#html-comment'},
{include: '#entities'}
]
},
{
begin: '((createTemplate|hbs|html))(\\()',
beginCaptures: {
1: {name: 'entity.name.function.ts'},
2: {name: 'meta.function-call.ts'},
3: {name: 'meta.brace.round.ts'}
},
contentName: 'meta.embedded.block.html',
end: '(\\))',
endCaptures: {1: {name: 'meta.brace.round.ts'}},
patterns: [
{
begin: '((`|\'|"))',
beginCaptures: {
1: {name: 'string.template.ts'},
2: {name: 'punctuation.definition.string.template.begin.ts'}
},
end: '((`|\'|"))',
endCaptures: {
1: {name: 'string.template.ts'},
2: {name: 'punctuation.definition.string.template.end.ts'}
},
patterns: [
{include: '#style'},
{include: '#script'},
{include: '#glimmer-else-block'},
{include: '#glimmer-bools'},
{include: '#glimmer-special-block'},
{include: '#glimmer-unescaped-expression'},
{include: '#glimmer-comment-block'},
{include: '#glimmer-comment-inline'},
{include: '#glimmer-expression-property'},
{include: '#glimmer-control-expression'},
{include: '#glimmer-expression'},
{include: '#glimmer-block'},
{include: '#html-tag'},
{include: '#component-tag'},
{include: '#html-comment'},
{include: '#entities'}
]
}
]
},
{
begin: '((precompileTemplate)\\s*)(\\()',
beginCaptures: {
1: {name: 'entity.name.function.ts'},
2: {name: 'meta.function-call.ts'},
3: {name: 'meta.brace.round.ts'}
},
end: '(\\))',
endCaptures: {1: {name: 'meta.brace.round.ts'}},
patterns: [
{
begin: '((`|\'|"))',
beginCaptures: {
1: {name: 'string.template.ts'},
2: {name: 'punctuation.definition.string.template.begin.ts'}
},
contentName: 'meta.embedded.block.html',
end: '((`|\'|"))',
endCaptures: {
1: {name: 'string.template.ts'},
2: {name: 'punctuation.definition.string.template.end.ts'}
},
patterns: [
{include: '#style'},
{include: '#script'},
{include: '#glimmer-else-block'},
{include: '#glimmer-bools'},
{include: '#glimmer-special-block'},
{include: '#glimmer-unescaped-expression'},
{include: '#glimmer-comment-block'},
{include: '#glimmer-comment-inline'},
{include: '#glimmer-expression-property'},
{include: '#glimmer-control-expression'},
{include: '#glimmer-expression'},
{include: '#glimmer-block'},
{include: '#html-tag'},
{include: '#component-tag'},
{include: '#html-comment'},
{include: '#entities'}
]
},
{include: 'source.ts#object-literal'},
{include: 'source.ts'}
]
}
]
},
param: {
captures: {
0: {
name: 'support.function',
patterns: [
{match: '(@|this)', name: 'variable.language'},
{match: '(\\.)+', name: 'punctuation.definition.tag'}
]
},
1: {
name: 'support.function',
patterns: [{match: '(\\.)+', name: 'punctuation.definition.tag'}]
}
},
match: '(@|this.)([a-zA-Z0-9_.-]+)'
},
script: {
begin: '(^[ \\t]+)?(?=<(?i:script)\\b(?!-))',
beginCaptures: {
1: {name: 'punctuation.whitespace.embedded.leading.html'}
},
end: '(?!\\G)([ \\t]*$\\n?)?',
endCaptures: {1: {name: 'punctuation.whitespace.embedded.trailing.html'}},
patterns: [
{
begin: '(<)((?i:script))\\b',
beginCaptures: {
0: {name: 'meta.tag.metadata.script.start.html'},
1: {name: 'punctuation.definition.tag.begin.html'},
2: {name: 'entity.name.tag.html'}
},
end: '(/)((?i:script))(>)',
endCaptures: {
0: {name: 'meta.tag.metadata.script.end.html'},
1: {name: 'punctuation.definition.tag.begin.html'},
2: {name: 'entity.name.tag.html'},
3: {name: 'punctuation.definition.tag.end.html'}
},
name: 'meta.embedded.block.html',
patterns: [
{
begin: '\\G',
end: '(?=/)',
patterns: [
{
begin: '(>)',
beginCaptures: {
0: {name: 'meta.tag.metadata.script.start.html'},
1: {name: 'punctuation.definition.tag.end.html'}
},
end: '((<))(?=/(?i:script))',
endCaptures: {
0: {name: 'meta.tag.metadata.script.end.html'},
1: {name: 'punctuation.definition.tag.begin.html'},
2: {name: 'source.js-ignored-vscode'}
},
patterns: [
{
begin: '\\G',
end: '(?=</(?i:script))',
name: 'source.js',
patterns: [
{
begin: '(^[ \\t]+)?(?=//)',
beginCaptures: {
1: {
name: 'punctuation.whitespace.comment.leading.js'
}
},
end: '(?!\\G)',
patterns: [
{
begin: '//',
beginCaptures: {
0: {name: 'punctuation.definition.comment.js'}
},
end: '(?=</script)|\\n',
name: 'comment.line.double-slash.js'
}
]
},
{
begin: '/\\*',
captures: {
0: {name: 'punctuation.definition.comment.js'}
},
end: '\\*/|(?=</script)',
name: 'comment.block.js'
},
{include: 'source.js'}
]
}
]
},
{
begin:
'(?ix:\n\t\t\t\t\t\t\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype\\s*=\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t\t(\'|"|)\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\n\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tx-handlebars\n\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-(handlebars-)?|ng-)?template\n\t\t\t\t\t\t\t\t\t\t\t\t\t | html\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\\s"\'>]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)',
end: '((<))(?=/(?i:script))',
endCaptures: {
0: {name: 'meta.tag.metadata.script.end.html'},
1: {name: 'punctuation.definition.tag.begin.html'},
2: {name: 'text.html.basic'}
},
patterns: [
{
begin: '(?!\\G)',
end: '(?=</(?i:script))',
name: 'text.html.basic',
patterns: [{include: 'text.html.basic'}]
}
]
},
{
begin: '(?=(?i:type))',
end: '(<)(?=/(?i:script))',
endCaptures: {
0: {name: 'meta.tag.metadata.script.end.html'},
1: {name: 'punctuation.definition.tag.begin.html'}
}
},
{include: '#string-double-quoted-html'},
{include: '#string-single-quoted-html'},
{include: '#glimmer-argument'},
{include: '#html-attribute'}
]
}
]
}
]
},
'string-double-quoted-handlebars': {
begin: '"',
beginCaptures: {
0: {name: 'punctuation.definition.string.begin.ember-handlebars'}
},
end: '"',
endCaptures: {
0: {name: 'punctuation.definition.string.end.ember-handlebars'}
},
name: 'string.quoted.double.ember-handlebars',
patterns: [
{match: '\\\\"', name: 'constant.character.escape.ember-handlebars'}
]
},
'string-double-quoted-html': {
begin: '"',
beginCaptures: {
0: {name: 'punctuation.definition.string.begin.ember-handlebars'}
},
end: '"',
endCaptures: {
0: {name: 'punctuation.definition.string.end.ember-handlebars'}
},
name: 'string.quoted.double.html.ember-handlebars',
patterns: [
{match: '\\\\"', name: 'constant.character.escape.ember-handlebars'},
{include: '#glimmer-bools'},
{include: '#glimmer-expression-property'},
{include: '#glimmer-control-expression'},
{include: '#glimmer-expression'},
{include: '#glimmer-block'}
]
},
'string-single-quoted-handlebars': {
begin: "'",
beginCaptures: {
0: {name: 'punctuation.definition.string.begin.ember-handlebars'}
},
end: "'",
endCaptures: {
0: {name: 'punctuation.definition.string.end.ember-handlebars'}
},
name: 'string.quoted.single.ember-handlebars',
patterns: [
{match: "\\\\'", name: 'constant.character.escape.ember-handlebars'}
]
},
'string-single-quoted-html': {
begin: "'",
beginCaptures: {
0: {name: 'punctuation.definition.string.begin.ember-handlebars'}
},
end: "'",
endCaptures: {
0: {name: 'punctuation.definition.string.end.ember-handlebars'}
},
name: 'string.quoted.single.html.ember-handlebars',
patterns: [
{match: "\\\\'", name: 'constant.character.escape.ember-handlebars'},
{include: '#glimmer-bools'},
{include: '#glimmer-expression-property'},
{include: '#glimmer-control-expression'},
{include: '#glimmer-expression'},
{include: '#glimmer-block'}
]
},
style: {
begin: '(^[ \\t]+)?(?=<(?i:style)\\b(?!-))',
beginCaptures: {
1: {name: 'punctuation.whitespace.embedded.leading.html'}
},
end: '(?!\\G)([ \\t]*$\\n?)?',
endCaptures: {1: {name: 'punctuation.whitespace.embedded.trailing.html'}},
patterns: [
{
begin: '(?i)(<)(style)(?=\\s|/?>)',
beginCaptures: {
0: {name: 'meta.tag.metadata.style.start.html'},
1: {name: 'punctuation.definition.tag.begin.html'},
2: {name: 'entity.name.tag.html'}
},
end: '(?i)((<)/)(style)\\s*(>)',
endCaptures: {
0: {name: 'meta.tag.metadata.style.end.html'},
1: {name: 'punctuation.definition.tag.begin.html'},
2: {name: 'source.css-ignored-vscode'},
3: {name: 'entity.name.tag.html'},
4: {name: 'punctuation.definition.tag.end.html'}
},
name: 'meta.embedded.block.html',
patterns: [
{
begin: '\\G',
captures: {1: {name: 'punctuation.definition.tag.end.html'}},
end: '(>)',
name: 'meta.tag.metadata.style.start.html',
patterns: [
{include: '#glimmer-argument'},
{include: '#html-attribute'}
]
},
{
begin: '(?!\\G)',
end: '(?=</(?i:style))',
name: 'source.css',
patterns: [{include: 'source.css'}]
}
]
}
]
},
'tag-like-content': {
patterns: [
{include: '#glimmer-bools'},
{include: '#glimmer-unescaped-expression'},
{include: '#glimmer-comment-block'},
{include: '#glimmer-comment-inline'},
{include: '#glimmer-expression-property'},
{include: '#boolean'},
{include: '#digit'},
{include: '#glimmer-control-expression'},
{include: '#glimmer-expression'},
{include: '#glimmer-block'},
{include: '#string-double-quoted-html'},
{include: '#string-single-quoted-html'},
{include: '#glimmer-as-stuff'},
{include: '#glimmer-argument'},
{include: '#html-attribute'}
]
},
variable: {match: '\\b([a-zA-Z0-9-_]+)\\b', name: 'support.function'}
},
scopeName: 'source.gts'
}
export default grammar