{
	"scopeName": "svelte.pug",
	"fileTypes": [],
	"injectionSelector": "L:text.pug -meta.embedded.ts -meta.tag.other -text.block.pug, L:inline.pug -meta.embedded.ts -meta.tag.other",
	"patterns": [
		{
			"include": "#interp-object-literal"
		},
		{
			"include": "#interp"
		},
		{
			"include": "#tag-component"
		},
		{
			"include": "#tag-component-no-params"
		},
		{
			"include": "#mixin-svelte"
		},
		{
			"include": "#mixin-else"
		}
	],
	"repository": {
		"interp-object-literal": {
			"contentName": "meta.interpolation meta.embedded.ts",
			"begin": "(?![!$#]){\\s*?(?={)",
			"beginCaptures": {
				"0": {
					"name": "punctuation.section.interpolation.begin"
				}
			},
			"end": "(?<=})\\s*?}",
			"endCaptures": {
				"0": {
					"name": "punctuation.section.interpolation.end"
				}
			},
			"patterns": [
				{
					"include": "source.ts#object-literal"
				}
			]
		},
		"interp": {
			"contentName": "meta.interpolation meta.embedded.ts",
			"begin": "(?![!$#]){",
			"beginCaptures": {
				"0": {
					"name": "punctuation.section.interpolation.begin"
				}
			},
			"end": "}",
			"endCaptures": {
				"0": {
					"name": "punctuation.section.interpolation.end"
				}
			},
			"patterns": [
				{
					"include": "source.ts"
				}
			]
		},
		"tag-component": {
			"name": "meta.tag.svelte",
			"begin": "(?<=^\\s*?|#\\[\\s*?|:\\s+?)([A-Z][a-zA-Z0-9_]*)\\s*?(?=\\()",
			"beginCaptures": {
				"0": {
					"name": "support.class.component.svelte"
				}
			},
			"end": "(?<=\\))",
			"endCaptures": {
				"0": {
					"name": "constant.name.attribute.tag"
				}
			},
			"patterns": [
				{
					"include": "text.pug#tag_attributes"
				}
			]
		},
		"tag-component-no-params": {
			"name": "meta.tag.svelte",
			"match": "(?<=^\\s*?|#\\[\\s*?|:\\s+?)([A-Z][a-zA-Z0-9_]*)",
			"captures": {
				"0": {
					"name": "support.class.component.svelte"
				}
			}
		},
		"mixin-svelte": {
			"match": "(?<=^\\s*?|#\\[\\s*?|:\\s+?)(\\+)(debug|if|elseif|then|catch|each|await|html|key)\\s*?(\\()\\s*?([`'\"])(.*?)(\\k<4>)\\s*?(\\))",
			"captures": {
				"1": {
					"name": "punctuation.definition.keyword"
				},
				"2": {
					"patterns": [
						{
							"match": "debug",
							"name": "keyword.other.debugger"
						},
						{
							"match": "if|elseif",
							"name": "keyword.control.conditional"
						},
						{
							"match": "then|catch|await",
							"name": "keyword.control.flow"
						},
						{
							"match": "each",
							"name": "keyword.control"
						},
						{
							"match": "html|key",
							"name": "support.function"
						}
					]
				},
				"3": {
					"name": "meta.brace.round"
				},
				"4": {
					"name": "punctuation.definition.generic.begin"
				},
				"5": {
					"patterns": [
						{
							"match": "(?<=each\\s*?\\(\\s*?')(.*)\\s+?(as\\s+?(.*?)(\\s*?,\\s*?)(.*?|)(\\s+?\\(.*\\)|)$)",
							"captures": {
								"1": {
									"name": "meta.embedded.ts",
									"patterns": [
										{
											"include": "source.ts"
										}
									]
								},
								"2": {
									"name": "keyword.control.as"
								},
								"3": {
									"name": "meta.embedded.t",
									"patterns": [
										{
											"include": "source.ts"
										}
									]
								},
								"4": {
									"name": "punctuation.separator"
								},
								"5": {
									"name": "meta.embedded.t",
									"patterns": [
										{
											"include": "source.ts"
										}
									]
								},
								"6": {
									"patterns": [
										{
											"match": "(\\()(.*)(\\))",
											"captures": {
												"1": {
													"name": "meta.brace.round"
												},
												"2": {
													"name": "variable"
												},
												"3": {
													"name": "meta.brace.round"
												}
											}
										}
									]
								}
							}
						},
						{
							"match": "(?<=each\\s*?\\(\\s*?')(.*)\\s+?(as\\s+?(.*?)(\\s+?\\(.*\\)|)$)",
							"captures": {
								"1": {
									"name": "meta.embedded.ts",
									"patterns": [
										{
											"include": "source.ts"
										}
									]
								},
								"2": {
									"name": "keyword.control.as"
								},
								"3": {
									"name": "meta.embedded.t",
									"patterns": [
										{
											"include": "source.ts"
										}
									]
								},
								"4": {
									"patterns": [
										{
											"match": "(\\()(.*)(\\))",
											"captures": {
												"1": {
													"name": "meta.brace.round"
												},
												"2": {
													"name": "variable"
												},
												"3": {
													"name": "meta.brace.round"
												}
											}
										}
									]
								}
							}
						},
						{
							"match": "(?<=await\\s*?\\(\\s*?')(.*)\\s+?(then(.*)$)",
							"captures": {
								"1": {
									"name": "meta.embedded.ts",
									"patterns": [
										{
											"include": "source.ts"
										}
									]
								},
								"2": {
									"name": "keyword.control.flow"
								},
								"3": {
									"name": "variable"
								}
							}
						},
						{
							"match": "(?<=debug\\s*?\\(\\s*?')(\\w+?)(,|$)",
							"captures": {
								"1": {
									"name": "variable"
								},
								"2": {
									"name": "punctuation.separator"
								}
							}
						},
						{
							"match": "(.*)$",
							"captures": {
								"0": {
									"name": "meta.embedded.ts",
									"patterns": [
										{
											"include": "source.ts"
										}
									]
								}
							}
						}
					]
				},
				"6": {
					"name": "punctuation.definition.generic.end"
				},
				"7": {
					"name": "meta.brace.round"
				}
			}
		},
		"mixin-else": {
			"match": "(?<=^\\s*?|#\\[\\s*?|:\\s+?)(\\+)(else)",
			"captures": {
				"1": {
					"name": "punctuation.definition.keyword"
				},
				"2": {
					"name": "keyword.control.conditional"
				}
			}
		}
	}
}
