Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 138 additions & 0 deletions grammars/angular/syntaxes/expression.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
{
"include": "#punctuationComma"
},
{
"include": "#punctuationSemicolon"
},
{
"include": "#punctuationAccessor"
}
Expand Down Expand Up @@ -558,6 +561,120 @@
}
]
},
"templateLiteral": {
"patterns": [
{
"include": "#templateLiteralCall"
},
{
"contentName": "string.template.ts",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.ts"
},
"2": {
"name": "string.template.ts punctuation.definition.string.template.begin.ts"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.ts punctuation.definition.string.template.end.ts"
}
},
"patterns": [
{
"include": "#templateLiteralSubstitutionElement"
},
{
"include": "#stringCharacterEscape"
}
]
}
]
},
"templateLiteralCall": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.ts",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#typeArguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.ts"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#typeArguments"
}
]
}
]
},
"templateLiteralSubstitutionElement": {
"name": "meta.template.expression.ts",
"begin": "\\${",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.ts"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.ts"
}
},
"patterns": [
{
"include": "#ngExpression"
}
],
"contentName": "meta.embedded.line.ts"
},
"typeArguments": {
"name": "meta.type.parameters.ts",
"begin": "<",
"beginCaptures": {
"0": {
"name": "punctuation.definition.typeparameters.begin.ts"
}
},
"end": ">",
"endCaptures": {
"0": {
"name": "punctuation.definition.typeparameters.end.ts"
}
},
"patterns": [
{
"include": "#typeArgumentsBody"
}
]
},
"stringCharacterEscape": {
"name": "constant.character.escape.ts",
"match": "\\\\(x\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
Expand Down Expand Up @@ -592,6 +709,9 @@
},
{
"include": "#qstringDouble"
},
{
"include": "#templateLiteral"
}
]
},
Expand Down Expand Up @@ -776,6 +896,24 @@
}
]
},
"typeArgumentsBody": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"0": {
"name": "keyword.operator.type.ts"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuationComma"
}
]
},
"type": {
"name": "meta.type.ts",
"patterns": [
Expand Down
102 changes: 102 additions & 0 deletions grammars/angular/syntaxes/host-object-literal.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"scopeName": "host-object-literal.ng",
"injectionSelector": "L:meta.decorator.ts -comment -text.html -expression.ng",
"patterns": [
{
"include": "#hostObjectLiteral"
}
],
"repository": {
"hostObjectLiteral": {
"begin": "(host)\\s*(:)\\s*{",
"beginCaptures": {
"1": {
"name": "meta.object-literal.key.ts"
},
"2": {
"name": "meta.object-literal.key.ts punctuation.separator.key-value.ts"
}
},
"contentName": "hostbindings.ng",
"end": "}",
"patterns": [
{
"include": "#ngHostBindingDynamic"
},
{
"include": "#ngHostBindingStatic"
},
{
"include": "source.ts"
}
]
},
"ngHostBindingDynamic": {
"begin": "\\s*('|\")([\\[(].*?[\\])])(\\1)(:)",
"beginCaptures": {
"1": {
"name": "string"
},
"2": {
"name": "entity.other.attribute-name.html"
},
"3": {
"name": "string"
},
"4": {
"name": "meta.object-literal.key.ts punctuation.separator.key-value.ts"
}
},
"contentName": "hostbinding.dynamic.ng",
"patterns": [
{
"include": "#ngHostBindingDynamicValue"
}
],
"end": "(?=,|})"
},
"ngHostBindingDynamicValue": {
"begin": "\\s*(`|'|\")",
"beginCaptures": {
"1": {
"name": "string"
}
},
"patterns": [
{
"include": "expression.ng"
}
],
"end": "\\1",
"endCaptures": {
"0": {
"name": "string"
}
}
},
"ngHostBindingStatic": {
"begin": "\\s*('|\")?(.*?)(\\1)?\\s*:",
"end": "(?=,|})",
"beginCaptures": {
"1": {
"name": "string"
},
"2": {
"name": "entity.other.attribute-name.html"
},
"3": {
"name": "string"
},
"4": {
"name": "meta.object-literal.key.ts punctuation.separator.key-value.ts"
}
},
"contentName": "hostbinding.static.ng",
"patterns": [
{
"include": "source.ts"
}
]
}
}
}
4 changes: 2 additions & 2 deletions grammars/angular/syntaxes/let-declaration.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@
],
"repository": {
"letDeclaration": {
"name": "meta.definition.variable.ng",
"begin": "(@let)\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)?",
"beginCaptures": {
"1": {
"name": "storage.type.ng"
},
"2": {
"name": "meta.definition.variable.ng"
"name": "variable.other.constant.ng"
},
"3": {
"name": "keyword.operator.assignment.ng"
Expand All @@ -25,7 +26,6 @@
"include": "#letInitializer"
}
],
"contentName": "meta.definition.variable.ng",
"end": "(?<=;)"
},
"letInitializer": {
Expand Down
54 changes: 54 additions & 0 deletions grammars/angular/syntaxes/template-blocks.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@
},
"contentName": "control.block.expression.ng",
"patterns": [
{
"include": "#blockExpressionOfClause"
},
{
"include": "#blockExpressionLetBinding"
},
{
"include": "#blockExpressionTrackClause"
},
{
"include": "expression.ng"
}
Expand All @@ -56,6 +65,51 @@
}
}
},
"blockExpressionOfClause": {
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s+(of)\\b",
"beginCaptures": {
"1": {
"name": "variable.other.constant.ng"
},
"2": {
"name": "keyword.operator.expression.of.ng"
}
},
"end": "(?=[$)])|(?<=;)",
"patterns": [
{
"include": "expression.ng"
}
]
},
"blockExpressionLetBinding": {
"begin": "\\blet\\b",
"beginCaptures": {
"0": {
"name": "storage.type.ng"
}
},
"end": "(?=[$)])|(?<=;)",
"patterns": [
{
"include": "expression.ng"
}
]
},
"blockExpressionTrackClause": {
"begin": "\\btrack\\b",
"beginCaptures": {
"0": {
"name": "keyword.control.track.ng"
}
},
"end": "(?=[$)])|(?<=;)",
"patterns": [
{
"include": "expression.ng"
}
]
},
"blockBody": {
"begin": "\\{",
"beginCaptures": {
Expand Down
Loading