{
	"scopeName": "template.tag.ng",
	"injectionSelector": "L:text.html#meta.tag -comment",
	"patterns": [
		{
			"include": "#propertyBinding"
		},
		{
			"include": "#eventBinding"
		},
		{
			"include": "#twoWayBinding"
		},
		{
			"include": "#templateBinding"
		}
	],
	"repository": {
		"propertyBinding": {
			"begin": "(\\[\\s*@?[-_a-zA-Z0-9.$]*%?\\s*])(=)([\"'])",
			"beginCaptures": {
				"1": {
					"name": "entity.other.attribute-name.html entity.other.ng-binding-name.property.html",
					"patterns": [
						{
							"include": "#bindingKey"
						}
					]
				},
				"2": {
					"name": "punctuation.separator.key-value.html"
				},
				"3": {
					"name": "string.quoted.html punctuation.definition.string.begin.html"
				}
			},
			"end": "\\3",
			"endCaptures": {
				"0": {
					"name": "string.quoted.html punctuation.definition.string.end.html"
				}
			},
			"name": "meta.ng-binding.property.html",
			"contentName": "expression.ng",
			"patterns": [
				{
					"include": "expression.ng"
				}
			]
		},
		"eventBinding": {
			"begin": "(\\(\\s*@?[-_a-zA-Z0-9.$]*\\s*\\))(=)([\"'])",
			"beginCaptures": {
				"1": {
					"name": "entity.other.attribute-name.html entity.other.ng-binding-name.event.html",
					"patterns": [
						{
							"include": "#bindingKey"
						}
					]
				},
				"2": {
					"name": "punctuation.separator.key-value.html"
				},
				"3": {
					"name": "string.quoted.html punctuation.definition.string.begin.html"
				}
			},
			"end": "\\3",
			"endCaptures": {
				"0": {
					"name": "string.quoted.html punctuation.definition.string.end.html"
				}
			},
			"name": "meta.ng-binding.event.html",
			"contentName": "expression.ng",
			"patterns": [
				{
					"include": "expression.ng"
				}
			]
		},
		"twoWayBinding": {
			"begin": "(\\[\\s*\\(\\s*@?[-_a-zA-Z0-9.$]*\\s*\\)\\s*\\])(=)([\"'])",
			"beginCaptures": {
				"1": {
					"name": "entity.other.attribute-name.html entity.other.ng-binding-name.two-way.html",
					"patterns": [
						{
							"include": "#bindingKey"
						}
					]
				},
				"2": {
					"name": "punctuation.separator.key-value.html"
				},
				"3": {
					"name": "string.quoted.html punctuation.definition.string.begin.html"
				}
			},
			"end": "\\3",
			"endCaptures": {
				"0": {
					"name": "string.quoted.html punctuation.definition.string.end.html"
				}
			},
			"name": "meta.ng-binding.two-way.html",
			"contentName": "expression.ng",
			"patterns": [
				{
					"include": "expression.ng"
				}
			]
		},
		"templateBinding": {
			"begin": "(\\*[-_a-zA-Z0-9.$]*)(=)([\"'])",
			"beginCaptures": {
				"1": {
					"name": "entity.other.attribute-name.html entity.other.ng-binding-name.template.html",
					"patterns": [
						{
							"include": "#bindingKey"
						}
					]
				},
				"2": {
					"name": "punctuation.separator.key-value.html"
				},
				"3": {
					"name": "string.quoted.html punctuation.definition.string.begin.html"
				}
			},
			"end": "\\3",
			"endCaptures": {
				"0": {
					"name": "string.quoted.html punctuation.definition.string.end.html"
				}
			},
			"name": "meta.ng-binding.template.html",
			"contentName": "expression.ng",
			"patterns": [
				{
					"include": "expression.ng"
				}
			]
		},
		"bindingKey": {
			"patterns": [
				{
					"match": "([\\[\\(]{1,2}|\\*)(?:\\s*)(@?[-_a-zA-Z0-9.$]*%?)(?:\\s*)([\\]\\)]{1,2})?",
					"captures": {
						"1": {
							"name": "punctuation.definition.ng-binding-name.begin.html"
						},
						"2": {
							"name": "entity.other.ng-binding-name.$2.html",
							"patterns": [
								{
									"match": "\\.",
									"name": "punctuation.accessor.html"
								}
							]
						},
						"3": {
							"name": "punctuation.definition.ng-binding-name.end.html"
						}
					}
				}
			]
		}
	}
}
