github-linguist 5.0.6 → 5.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/source.bsl.json +196 -162
  3. data/grammars/source.ceylon.json +43 -21
  4. data/grammars/source.coffee.json +46 -21
  5. data/grammars/source.cs.json +2 -2
  6. data/grammars/source.csound-score.json +41 -18
  7. data/grammars/source.csound.json +63 -7
  8. data/grammars/source.css.json +2 -2
  9. data/grammars/source.css.less.json +22 -91
  10. data/grammars/source.ditroff.json +114 -116
  11. data/grammars/source.gfm.clean.json +28 -0
  12. data/grammars/source.gfm.json +1 -0
  13. data/grammars/source.jison.json +678 -0
  14. data/grammars/source.jisonlex-injection.json +11 -0
  15. data/grammars/source.jisonlex.json +432 -0
  16. data/grammars/source.js.json +12 -67
  17. data/grammars/source.jsdoc.json +485 -0
  18. data/grammars/source.p4.json +15 -0
  19. data/grammars/source.perl6fe.json +37 -1
  20. data/grammars/source.puppet.json +1 -1
  21. data/grammars/source.python.json +6 -3
  22. data/grammars/source.quoting.perl6fe.json +101 -0
  23. data/grammars/source.rpm-spec.json +7 -3
  24. data/grammars/source.scad.json +152 -0
  25. data/grammars/source.shaderlab.json +42 -15
  26. data/grammars/source.terraform.json +18 -0
  27. data/grammars/source.yaml.json +57 -32
  28. data/grammars/text.html.php.blade.json +1 -1
  29. data/grammars/text.marko.json +1522 -0
  30. data/grammars/text.roff.json +9 -6
  31. data/lib/linguist.rb +2 -2
  32. data/lib/linguist/documentation.yml +4 -3
  33. data/lib/linguist/heuristics.rb +2 -0
  34. data/lib/linguist/languages.json +1 -1
  35. data/lib/linguist/languages.yml +33 -1
  36. data/lib/linguist/samples.json +423 -48
  37. data/lib/linguist/version.rb +1 -1
  38. metadata +13 -7
  39. data/grammars/module.ceylon.json +0 -54
@@ -155,6 +155,24 @@
155
155
  "include": "#string_interpolation"
156
156
  }
157
157
  ]
158
+ },
159
+ {
160
+ "begin": "(?>\\s*<<(\\w+))",
161
+ "beginCaptures": {
162
+ "0": {
163
+ "name": "punctuation.definition.string.begin.terraform"
164
+ },
165
+ "1": {
166
+ "name": "keyword.operator.heredoc.terraform"
167
+ }
168
+ },
169
+ "end": "^\\1$",
170
+ "endCaptures": {
171
+ "0": {
172
+ "name": "keyword.operator.heredoc.terraform"
173
+ }
174
+ },
175
+ "name": "string.unquoted.heredoc.terraform"
158
176
  }
159
177
  ],
160
178
  "repository": {
@@ -11,6 +11,7 @@
11
11
  "yml",
12
12
  "yml.erb",
13
13
  "sls",
14
+ "stylelintrc",
14
15
  "sublime-syntax",
15
16
  "Boxfile"
16
17
  ],
@@ -30,6 +31,10 @@
30
31
  "match": "^---",
31
32
  "name": "punctuation.definition.directives.end.yaml"
32
33
  },
34
+ {
35
+ "match": "^\\.\\.\\.",
36
+ "name": "punctuation.definition.document.end.yaml"
37
+ },
33
38
  {
34
39
  "begin": "^(\\s*)(?!-\\s*)(\\S+)\\s*(:)(?:\\s+((!)[^!\\s]+))?\\s+(?=\\||>)",
35
40
  "beginCaptures": {
@@ -46,7 +51,7 @@
46
51
  "name": "punctuation.definition.tag.local.yaml"
47
52
  }
48
53
  },
49
- "end": "^(?!\\1\\s+)(?=\\s*(-|[^!@#%&*>,].*:|#))",
54
+ "end": "^(((?!$)(?!\\1\\s+))|(?=\\1\\s*(-|[^!@#%&*>,].*:\\s+)))",
50
55
  "contentName": "string.unquoted.block.yaml",
51
56
  "patterns": [
52
57
  {
@@ -79,7 +84,7 @@
79
84
  "name": "punctuation.definition.tag.local.yaml"
80
85
  }
81
86
  },
82
- "end": "^(?!\\1 \\4\\s+)(?=\\s*(-|[^!@#%&*>,].*:|#))",
87
+ "end": "^(((?!$)(?!\\1\\s+))|(?=\\1\\s*(-|[^!@#%&*>,].*:\\s+)))",
83
88
  "contentName": "string.unquoted.block.yaml",
84
89
  "patterns": [
85
90
  {
@@ -109,25 +114,25 @@
109
114
  }
110
115
  },
111
116
  {
112
- "begin": "(?>^\\s*(-)?\\s*)([^!{@#%&*>,'\"][^#'\"]*?)(:)\\s+((!!)omap)?",
117
+ "begin": "(?>^(\\s*)(-)?\\s*)([^!{@#%&*>,'\"][^#'\"]*?)(:)\\s+((!!)omap)?",
113
118
  "beginCaptures": {
114
- "1": {
119
+ "2": {
115
120
  "name": "punctuation.definition.entry.yaml"
116
121
  },
117
- "2": {
122
+ "3": {
118
123
  "name": "entity.name.tag.yaml"
119
124
  },
120
- "3": {
125
+ "4": {
121
126
  "name": "punctuation.separator.key-value.yaml"
122
127
  },
123
- "4": {
128
+ "5": {
124
129
  "name": "keyword.other.omap.yaml"
125
130
  },
126
- "5": {
131
+ "6": {
127
132
  "name": "punctuation.definition.tag.omap.yaml"
128
133
  }
129
134
  },
130
- "end": "(?=^\\s*(-|[^!{@#%&*>,].*:\\s+))",
135
+ "end": "^((?!\\1\\s+)|(?=\\1\\s*(-|[^!@#%&*>,].*:\\s+|#)))",
131
136
  "patterns": [
132
137
  {
133
138
  "include": "#scalar-content"
@@ -135,46 +140,46 @@
135
140
  ]
136
141
  },
137
142
  {
138
- "begin": "(-)?\\s*(?:((')([^']*?)('))|((\")([^\"]*?)(\")))(:)\\s+((!!)omap)?",
143
+ "begin": "^(\\s*)(-)?\\s*(?:((')([^']*?)('))|((\")([^\"]*?)(\")))(:)\\s+((!!)omap)?",
139
144
  "beginCaptures": {
140
- "1": {
145
+ "2": {
141
146
  "name": "punctuation.definition.entry.yaml"
142
147
  },
143
- "2": {
148
+ "3": {
144
149
  "name": "string.quoted.single.yaml"
145
150
  },
146
- "3": {
151
+ "4": {
147
152
  "name": "punctuation.definition.string.begin.yaml"
148
153
  },
149
- "4": {
154
+ "5": {
150
155
  "name": "entity.name.tag.yaml"
151
156
  },
152
- "5": {
157
+ "6": {
153
158
  "name": "punctuation.definition.string.end.yaml"
154
159
  },
155
- "6": {
160
+ "7": {
156
161
  "name": "string.quoted.double.yaml"
157
162
  },
158
- "7": {
163
+ "8": {
159
164
  "name": "punctuation.definition.string.begin.yaml"
160
165
  },
161
- "8": {
166
+ "9": {
162
167
  "name": "entity.name.tag.yaml"
163
168
  },
164
- "9": {
169
+ "10": {
165
170
  "name": "punctuation.definition.string.end.yaml"
166
171
  },
167
- "10": {
172
+ "11": {
168
173
  "name": "punctuation.separator.key-value.yaml"
169
174
  },
170
- "11": {
175
+ "12": {
171
176
  "name": "keyword.other.omap.yaml"
172
177
  },
173
- "12": {
178
+ "13": {
174
179
  "name": "punctuation.definition.tag.omap.yaml"
175
180
  }
176
181
  },
177
- "end": "(?=^\\s*(-|[^!{@#%&*>,].*:\\s+))",
182
+ "end": "^((?!\\1\\s+)|(?=\\1\\s*(-|[^!@#%&*>,].*:\\s+|#)))",
178
183
  "patterns": [
179
184
  {
180
185
  "include": "#scalar-content"
@@ -182,25 +187,25 @@
182
187
  ]
183
188
  },
184
189
  {
185
- "begin": "(-)\\s+(?:((!!)omap)|((!)[^!\\s]+)|(?![!@#%&*>,]))",
190
+ "begin": "^(\\s*)(-)\\s+(?:((!!)omap)|((!)[^!\\s]+)|(?![!@#%&*>,]))",
186
191
  "beginCaptures": {
187
- "1": {
192
+ "2": {
188
193
  "name": "punctuation.definition.entry.yaml"
189
194
  },
190
- "2": {
195
+ "3": {
191
196
  "name": "keyword.other.omap.yaml"
192
197
  },
193
- "3": {
198
+ "4": {
194
199
  "name": "punctuation.definition.tag.omap.yaml"
195
200
  },
196
- "4": {
201
+ "5": {
197
202
  "name": "keyword.other.tag.local.yaml"
198
203
  },
199
- "5": {
204
+ "6": {
200
205
  "name": "punctuation.definition.tag.local.yaml"
201
206
  }
202
207
  },
203
- "end": "(?=^\\s*(-|[^!{@#%&*>,].*:))",
208
+ "end": "^((?!\\1\\s+)|(?=\\1\\s*(-|[^!@#%&*>,].*:\\s+|#)))",
204
209
  "patterns": [
205
210
  {
206
211
  "include": "#scalar-content"
@@ -272,8 +277,28 @@
272
277
  ]
273
278
  },
274
279
  "escaped_char": {
275
- "match": "\\\\.",
276
- "name": "constant.character.escape.yaml"
280
+ "patterns": [
281
+ {
282
+ "match": "\\\\u[A-Fa-f0-9]{4}",
283
+ "name": "constant.character.escape.yaml"
284
+ },
285
+ {
286
+ "match": "\\\\U[A-Fa-f0-9]{8}",
287
+ "name": "constant.character.escape.yaml"
288
+ },
289
+ {
290
+ "match": "\\\\x\\h{2}",
291
+ "name": "constant.character.escape.yaml"
292
+ },
293
+ {
294
+ "match": "\\\\[0abtnvfre \"/\\N_LP]",
295
+ "name": "constant.character.escape.yaml"
296
+ },
297
+ {
298
+ "match": "\\\\(u.{4}|U.{8}|x.{2}|.)",
299
+ "name": "invalid.illegal.escape.yaml"
300
+ }
301
+ ]
277
302
  },
278
303
  "numeric": {
279
304
  "match": "(((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?)\\s*($|(?=#)(?!#{))",
@@ -215,7 +215,7 @@
215
215
  ]
216
216
  },
217
217
  {
218
- "begin": "(?x)\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\n@\n(?: # Ordering not important as we everything will be matched up to opening parentheses\n [Bb]reak\n|[Cc]an\n|[Cc]annot\n|[Cc]hoice\n|[Cc]omponent\n|[Cc]ontinue\n|[Ee]ach\n|[Ee]lsecan\n|[Ee]lsecannot\n|[Ee]lseif\n|[Ee]xtends\n|[Ff]or\n|[Ff]oreach\n|[Ff]orelse\n|[Hh]asSection\n|[Ii]f\n|[Ii]nclude\n|[Ii]ncludeIf\n|[Ii]nject\n|[Ll]ang\n|[Pp]hp\n|[Pp]repend\n|[Pp]ush\n|[Ss]ection\n|[Ss]lot\n|[Ss]tack\n|[Uu]nless\n|[Uu]nset\n|[Ww]hile\n|[Yy]ield\n)\n[\\t ]* # Whitespace between name and parentheses, consumed\n(?=\\() # Followed by opening parentheses, not consumed",
218
+ "begin": "(?x)\n(?<![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\n@\n(?: # Ordering not important as we everything will be matched up to opening parentheses\n [Bb]reak\n|[Cc]an\n|[Cc]annot\n|[Cc]hoice\n|[Cc]omponent\n|[Cc]ontinue\n|[Ee]ach\n|[Ee]lsecan\n|[Ee]lsecannot\n|[Ee]lseif\n|[Ee]xtends\n|[Ff]or\n|[Ff]oreach\n|[Ff]orelse\n|[Hh]asSection\n|[Ii]f\n|[Ii]nclude\n|[Ii]ncludeIf\n|[Ii]ncludeWhen\n|[Ii]nject\n|[Ll]ang\n|[Pp]hp\n|[Pp]repend\n|[Pp]ush\n|[Ss]ection\n|[Ss]lot\n|[Ss]tack\n|[Uu]nless\n|[Uu]nset\n|[Ww]hile\n|[Yy]ield\n)\n[\\t ]* # Whitespace between name and parentheses, consumed\n(?=\\() # Followed by opening parentheses, not consumed",
219
219
  "beginCaptures": {
220
220
  "0": {
221
221
  "name": "keyword.blade"
@@ -0,0 +1,1522 @@
1
+ {
2
+ "fileTypes": [
3
+ "marko"
4
+ ],
5
+ "name": "Marko",
6
+ "patterns": [
7
+ {
8
+ "include": "#scriptlet"
9
+ },
10
+ {
11
+ "include": "#special-js-tags"
12
+ },
13
+ {
14
+ "include": "#js-code-block"
15
+ },
16
+ {
17
+ "include": "#component-style"
18
+ },
19
+ {
20
+ "include": "#comment-concise-line"
21
+ },
22
+ {
23
+ "include": "#comment-concise-block"
24
+ },
25
+ {
26
+ "include": "#comment-html"
27
+ },
28
+ {
29
+ "include": "#html-block-concise"
30
+ },
31
+ {
32
+ "include": "#html-line-concise"
33
+ },
34
+ {
35
+ "include": "#cdata"
36
+ },
37
+ {
38
+ "include": "#doctype"
39
+ },
40
+ {
41
+ "include": "#tag-script-concise"
42
+ },
43
+ {
44
+ "include": "#tag-style-concise"
45
+ },
46
+ {
47
+ "include": "#tag-concise"
48
+ },
49
+ {
50
+ "include": "#tag-html"
51
+ },
52
+ {
53
+ "include": "#placeholder-patterns"
54
+ }
55
+ ],
56
+ "repository": {
57
+ "attr-assignment-concise": {
58
+ "applyEndPatternLast": 1,
59
+ "begin": "(?:\\s+|[,])(?:(ref)|([a-zA-Z][a-zA-Z]*)|(data-[a-zA-Z-]*)|([_a-zA-Z0-9][a-zA-Z0-9:_.-]*))\\s*([=])\\s*",
60
+ "beginCaptures": {
61
+ "1": {
62
+ "name": "support.function.marko-attribute"
63
+ },
64
+ "2": {
65
+ "name": "entity.other.attribute-name.html"
66
+ },
67
+ "3": {
68
+ "name": "entity.other.attribute-name.html"
69
+ },
70
+ "4": {
71
+ "name": "support.function.marko-attribute"
72
+ },
73
+ "5": {
74
+ "name": "punctuation.separator.key-value.html"
75
+ }
76
+ },
77
+ "end": "(?=([,;]|\\s|$))",
78
+ "patterns": [
79
+ {
80
+ "include": "#expression"
81
+ }
82
+ ]
83
+ },
84
+ "attr-assignment-html": {
85
+ "applyEndPatternLast": 1,
86
+ "begin": "(?:\\s+|[,])(?:(ref)|([a-zA-Z][a-zA-Z]*)|(data-[a-zA-Z0-9-]*)|([_a-zA-Z0-9][a-zA-Z0-9:_.-]*))\\s*([=])\\s*",
87
+ "beginCaptures": {
88
+ "1": {
89
+ "name": "support.function.marko-attribute"
90
+ },
91
+ "2": {
92
+ "name": "entity.other.attribute-name.html"
93
+ },
94
+ "3": {
95
+ "name": "entity.other.attribute-name.html"
96
+ },
97
+ "4": {
98
+ "name": "support.function.marko-attribute"
99
+ },
100
+ "5": {
101
+ "name": "punctuation.separator.key-value.html"
102
+ }
103
+ },
104
+ "end": "(?=[,;]|\\s|/>|>)",
105
+ "patterns": [
106
+ {
107
+ "include": "#expression-no-gt"
108
+ }
109
+ ]
110
+ },
111
+ "attr-js-block": {
112
+ "applyEndPatternLast": 1,
113
+ "begin": "\\s\\{",
114
+ "beginCaptures": {
115
+ "0": {
116
+ "name": "punctuation.section.scope.begin.js"
117
+ }
118
+ },
119
+ "end": "\\}",
120
+ "endCaptures": {
121
+ "0": {
122
+ "name": "punctuation.section.scope.end.js"
123
+ }
124
+ },
125
+ "patterns": [
126
+ {
127
+ "include": "#js"
128
+ }
129
+ ]
130
+ },
131
+ "attr-no-value": {
132
+ "captures": {
133
+ "1": {
134
+ "name": "entity.other.attribute-name.html"
135
+ },
136
+ "2": {
137
+ "name": "entity.other.attribute-name.html"
138
+ },
139
+ "3": {
140
+ "name": "support.function.marko-attribute"
141
+ }
142
+ },
143
+ "match": "\\s+(?:([a-zA-Z][a-zA-Z]*)|(data-[a-zA-Z0-9-]*)|([a-zA-Z0-9][a-zA-Z0-9:_.-]+))(?=\\s|/>|>|$)"
144
+ },
145
+ "attr-semicolon": {
146
+ "applyEndPatternLast": 1,
147
+ "begin": "([;])",
148
+ "beginCaptures": {
149
+ "1": {
150
+ "name": "punctuation.terminator.statement.js"
151
+ }
152
+ },
153
+ "end": "(?=\\n)",
154
+ "patterns": [
155
+ {
156
+ "include": "#comment-line"
157
+ },
158
+ {
159
+ "include": "#comment-block"
160
+ }
161
+ ]
162
+ },
163
+ "attr-stuff-concise": {
164
+ "patterns": [
165
+ {
166
+ "include": "#comment-line"
167
+ },
168
+ {
169
+ "include": "#comment-block"
170
+ },
171
+ {
172
+ "begin": "\\s[\\[]",
173
+ "end": "[\\]]",
174
+ "patterns": [
175
+ {
176
+ "include": "#attr-stuff-concise"
177
+ }
178
+ ]
179
+ },
180
+ {
181
+ "begin": "[,]\\s*$",
182
+ "end": "(?=\\s)"
183
+ },
184
+ {
185
+ "include": "#attr-with-arg"
186
+ },
187
+ {
188
+ "include": "#attr-assignment-concise"
189
+ },
190
+ {
191
+ "include": "#attr-no-value"
192
+ },
193
+ {
194
+ "include": "#placeholder"
195
+ },
196
+ {
197
+ "include": "#attr-js-block"
198
+ },
199
+ {
200
+ "include": "#expression"
201
+ },
202
+ {
203
+ "include": "#attr-semicolon"
204
+ }
205
+ ]
206
+ },
207
+ "attr-stuff-html": {
208
+ "patterns": [
209
+ {
210
+ "include": "#comment-block"
211
+ },
212
+ {
213
+ "include": "#attr-with-arg"
214
+ },
215
+ {
216
+ "include": "#attr-assignment-html"
217
+ },
218
+ {
219
+ "include": "#attr-no-value"
220
+ },
221
+ {
222
+ "include": "#placeholder"
223
+ },
224
+ {
225
+ "include": "#attr-js-block"
226
+ },
227
+ {
228
+ "include": "#expression-no-gt"
229
+ },
230
+ {
231
+ "include": "#attr-semicolon"
232
+ }
233
+ ]
234
+ },
235
+ "attr-with-arg": {
236
+ "applyEndPatternLast": 1,
237
+ "begin": "\\s+([_a-zA-Z0-9][a-zA-Z0-9:_.-]+)(\\()",
238
+ "beginCaptures": {
239
+ "1": {
240
+ "name": "support.function.marko-attribute"
241
+ },
242
+ "2": {
243
+ "name": "meta.brace.round.js"
244
+ }
245
+ },
246
+ "end": "\\)",
247
+ "endCaptures": {
248
+ "1": {
249
+ "name": "meta.brace.round.js"
250
+ }
251
+ },
252
+ "patterns": [
253
+ {
254
+ "include": "#expression"
255
+ }
256
+ ]
257
+ },
258
+ "cdata": {
259
+ "begin": "<!\\[CDATA\\[",
260
+ "beginCaptures": {
261
+ "0": {
262
+ "name": "punctuation.definition.string.begin.xml"
263
+ }
264
+ },
265
+ "end": "]]>",
266
+ "endCaptures": {
267
+ "0": {
268
+ "name": "punctuation.definition.string.end.xml"
269
+ }
270
+ },
271
+ "name": "string.unquoted.cdata.xml"
272
+ },
273
+ "comment-block": {
274
+ "begin": "/\\*",
275
+ "beginCaptures": {
276
+ "0": {
277
+ "name": "punctuation.definition.comment.begin.js"
278
+ }
279
+ },
280
+ "end": "\\*/",
281
+ "endCaptures": {
282
+ "0": {
283
+ "name": "punctuation.definition.comment.end.js"
284
+ }
285
+ },
286
+ "name": "comment.block.js"
287
+ },
288
+ "comment-concise-block": {
289
+ "begin": "^(\\s*)/\\*",
290
+ "beginCaptures": {
291
+ "0": {
292
+ "name": "punctuation.definition.comment.begin.js"
293
+ }
294
+ },
295
+ "end": "\\*/.*",
296
+ "endCaptures": {
297
+ "0": {
298
+ "name": "punctuation.definition.comment.end.js"
299
+ }
300
+ },
301
+ "name": "comment.block.js"
302
+ },
303
+ "comment-concise-line": {
304
+ "begin": "^(\\s*)//",
305
+ "comment": "Single line comment (concise)",
306
+ "end": "$",
307
+ "name": "comment.line.double-slash.marko"
308
+ },
309
+ "comment-html": {
310
+ "begin": "\\s*<!--",
311
+ "captures": {
312
+ "0": {
313
+ "name": "punctuation.definition.comment.html"
314
+ }
315
+ },
316
+ "end": "-->",
317
+ "name": "comment.block.html"
318
+ },
319
+ "comment-line": {
320
+ "begin": "(//)",
321
+ "beginCaptures": {
322
+ "1": {
323
+ "name": "punctuation.definition.comment.js"
324
+ }
325
+ },
326
+ "end": "(?=\\n)",
327
+ "name": "comment.line.double-slash.js"
328
+ },
329
+ "component-style": {
330
+ "patterns": [
331
+ {
332
+ "include": "#component-style-less"
333
+ },
334
+ {
335
+ "include": "#component-style-css"
336
+ }
337
+ ]
338
+ },
339
+ "component-style-css": {
340
+ "applyEndPatternLast": 1,
341
+ "begin": "^(style)(?:\\.([a-z]+))?\\s+(\\{)",
342
+ "beginCaptures": {
343
+ "1": {
344
+ "name": "storage.type.marko.css"
345
+ },
346
+ "2": {
347
+ "name": "storage.modifier.marko.less"
348
+ },
349
+ "3": {
350
+ "name": "punctuation.section.scope.begin.css"
351
+ }
352
+ },
353
+ "end": "\\}",
354
+ "endCaptures": {
355
+ "0": {
356
+ "name": "punctuation.section.scope.end.css"
357
+ }
358
+ },
359
+ "patterns": [
360
+ {
361
+ "include": "source.css"
362
+ }
363
+ ]
364
+ },
365
+ "component-style-less": {
366
+ "applyEndPatternLast": 1,
367
+ "begin": "^(style)\\.(less)\\s+(\\{)",
368
+ "beginCaptures": {
369
+ "1": {
370
+ "name": "storage.type.marko.less"
371
+ },
372
+ "2": {
373
+ "name": "storage.modifier.marko.less"
374
+ },
375
+ "3": {
376
+ "name": "punctuation.section.scope.begin.less"
377
+ }
378
+ },
379
+ "end": "\\}",
380
+ "endCaptures": {
381
+ "0": {
382
+ "name": "punctuation.section.scope.end.less"
383
+ }
384
+ },
385
+ "patterns": [
386
+ {
387
+ "include": "source.css.less"
388
+ }
389
+ ]
390
+ },
391
+ "doctype": {
392
+ "begin": "<!",
393
+ "captures": {
394
+ "0": {
395
+ "name": "punctuation.definition.marko-tag.html"
396
+ }
397
+ },
398
+ "end": ">",
399
+ "name": "meta.tag.sgml.html",
400
+ "patterns": [
401
+ {
402
+ "begin": "(?i:DOCTYPE)",
403
+ "captures": {
404
+ "1": {
405
+ "name": "entity.name.tag.doctype.html"
406
+ }
407
+ },
408
+ "end": "(?=>)",
409
+ "name": "meta.tag.sgml.doctype.html",
410
+ "patterns": [
411
+ {
412
+ "match": "\"[^\">]*\"",
413
+ "name": "string.quoted.double.doctype.identifiers-and-DTDs.html"
414
+ }
415
+ ]
416
+ }
417
+ ]
418
+ },
419
+ "expression": {
420
+ "comment": "A JavaScript expression",
421
+ "patterns": [
422
+ {
423
+ "include": "#expression-common"
424
+ },
425
+ {
426
+ "include": "#expression-operator-gt"
427
+ }
428
+ ]
429
+ },
430
+ "expression-common": {
431
+ "comment": "A JavaScript expression",
432
+ "patterns": [
433
+ {
434
+ "include": "#expression-string-single"
435
+ },
436
+ {
437
+ "include": "#expression-string-double"
438
+ },
439
+ {
440
+ "include": "#expression-string-template"
441
+ },
442
+ {
443
+ "include": "#expression-group-parens"
444
+ },
445
+ {
446
+ "include": "#expression-group-brackets"
447
+ },
448
+ {
449
+ "include": "#expression-group-braces"
450
+ },
451
+ {
452
+ "include": "#expression-constant"
453
+ },
454
+ {
455
+ "include": "#expression-hex"
456
+ },
457
+ {
458
+ "include": "#expression-numeric"
459
+ },
460
+ {
461
+ "include": "#expression-operator-unary"
462
+ },
463
+ {
464
+ "include": "#expression-operator-binary"
465
+ },
466
+ {
467
+ "include": "#expression-operator-special"
468
+ },
469
+ {
470
+ "match": "[.]([\\p{L}\\p{Nl}$_][\\p{L}\\p{Nl}$\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\x{200C}\\x{200D}]*)\\b"
471
+ },
472
+ {
473
+ "captures": {
474
+ "1": {
475
+ "name": "entity.name.type"
476
+ },
477
+ "2": {
478
+ "name": "entity.name.type"
479
+ }
480
+ },
481
+ "match": "\\b(out)[.](global)\\b"
482
+ },
483
+ {
484
+ "captures": {
485
+ "1": {
486
+ "name": "variable.language.js"
487
+ },
488
+ "2": {
489
+ "name": "entity.name.type"
490
+ }
491
+ },
492
+ "match": "\\b(this)[.](input|state)\\b"
493
+ },
494
+ {
495
+ "match": "\\b(input|state|component|JSON|out)\\b",
496
+ "name": "entity.name.type"
497
+ },
498
+ {
499
+ "match": "\\b(let|var|const)\\b",
500
+ "name": "storage.type.var.js"
501
+ },
502
+ {
503
+ "captures": {
504
+ "1": {
505
+ "name": "entity.name.type"
506
+ },
507
+ "2": {
508
+ "name": "entity.name.type"
509
+ }
510
+ },
511
+ "match": "\\b(require)[.](resolve)\\b"
512
+ },
513
+ {
514
+ "match": "\\b(console|JSON|event|window|setTimeout|setInterval|require)\\b",
515
+ "name": "entity.name.type"
516
+ },
517
+ {
518
+ "match": "\\b(this|arguments)\\b",
519
+ "name": "variable.language.js"
520
+ },
521
+ {
522
+ "include": "#expression-special-class"
523
+ }
524
+ ]
525
+ },
526
+ "expression-constant": {
527
+ "captures": {
528
+ "1": {
529
+ "name": "constant.language.boolean.true.js"
530
+ },
531
+ "2": {
532
+ "name": "constant.language.boolean.false.js"
533
+ },
534
+ "3": {
535
+ "name": "constant.language.infinity.js"
536
+ },
537
+ "4": {
538
+ "name": "constant.language.nan.js"
539
+ },
540
+ "5": {
541
+ "name": "constant.language.null.js"
542
+ },
543
+ "6": {
544
+ "name": "constant.language.undefined.js"
545
+ }
546
+ },
547
+ "match": "(true)|(false)|(Infinity)|(NaN)|(null)|(undefined)"
548
+ },
549
+ "expression-group-braces": {
550
+ "applyEndPatternLast": 1,
551
+ "begin": "\\{",
552
+ "beginCaptures": {
553
+ "0": {
554
+ "name": "punctuation.section.scope.begin.js"
555
+ }
556
+ },
557
+ "end": "\\}",
558
+ "endCaptures": {
559
+ "0": {
560
+ "name": "punctuation.section.scope.end.js"
561
+ }
562
+ },
563
+ "patterns": [
564
+ {
565
+ "include": "#expression"
566
+ }
567
+ ]
568
+ },
569
+ "expression-group-brackets": {
570
+ "applyEndPatternLast": 1,
571
+ "begin": "\\[",
572
+ "beginCaptures": {
573
+ "0": {
574
+ "name": "meta.brace.square.js"
575
+ }
576
+ },
577
+ "end": "\\]",
578
+ "endCaptures": {
579
+ "0": {
580
+ "name": "meta.brace.square.js"
581
+ }
582
+ },
583
+ "patterns": [
584
+ {
585
+ "include": "#expression"
586
+ }
587
+ ]
588
+ },
589
+ "expression-group-parens": {
590
+ "applyEndPatternLast": 1,
591
+ "begin": "\\(",
592
+ "beginCaptures": {
593
+ "0": {
594
+ "name": "meta.brace.round.js"
595
+ }
596
+ },
597
+ "end": "\\)",
598
+ "endCaptures": {
599
+ "0": {
600
+ "name": "meta.brace.round.js"
601
+ }
602
+ },
603
+ "patterns": [
604
+ {
605
+ "include": "#expression"
606
+ }
607
+ ]
608
+ },
609
+ "expression-hex": {
610
+ "match": "\\b0[xX]\\h+\\b",
611
+ "name": "constant.numeric.hex.js"
612
+ },
613
+ "expression-no-gt": {
614
+ "comment": "A JavaScript expression",
615
+ "patterns": [
616
+ {
617
+ "include": "#expression-common"
618
+ }
619
+ ]
620
+ },
621
+ "expression-numeric": {
622
+ "match": "(?x)\n\t\t\t\t(?<!\\w)\t\t\t\t\t\t\t\t\t# Ensure word boundry\n\t\t\t\t(?>\n\t\t\t\t\t(\n\t\t\t\t\t\t(0|[1-9][0-9]*)(\\.[0-9]*)?\t\t# 0 or 1 or 1. or 1.0\n\t\t\t\t\t | \\.[0-9]+\t\t\t\t\t\t# .1\n\t\t\t\t\t)\n\t\t\t\t\t([eE][+-]?[0-9]+)?\t\t\t\t\t# Exponent\n\t\t\t\t)\n\t\t\t\t(?!\\w)\t\t\t\t\t\t\t\t\t# Ensure word boundry\n\t\t\t",
623
+ "name": "constant.numeric.js"
624
+ },
625
+ "expression-operator-binary": {
626
+ "captures": {
627
+ "2": {
628
+ "name": "keyword.operator.js"
629
+ }
630
+ },
631
+ "match": "(\\s+|\\b)(===|==|!==|!=|<=|<<|&&|\\|\\||<|\\+=|-=|\\*=|/=|%=|[=+*/%|&~^:])(\\s+|\\b)"
632
+ },
633
+ "expression-operator-gt": {
634
+ "captures": {
635
+ "2": {
636
+ "name": "keyword.operator.js"
637
+ }
638
+ },
639
+ "match": "(\\s+|\\b)(>=|>>|>)(\\s+|\\b)"
640
+ },
641
+ "expression-operator-special": {
642
+ "match": "(?<!\\.|\\$)\\b(delete|in|instanceof|new|typeof\\s*|void|with|from|to|step)\\b(?!\\$)",
643
+ "name": "keyword"
644
+ },
645
+ "expression-operator-unary": {
646
+ "match": "\\b(!|\\+\\+)\\b|\\b\\-\\-(?<!\\s)",
647
+ "name": "keyword.operator.js"
648
+ },
649
+ "expression-special-class": {
650
+ "match": "(?<!\\.|\\$)\\b(Array|Boolean|Date|Error|EvalError|Function|Number|Object|RangeError|ReferenceError|RegExp|String|SyntaxError|TypeError|URIError)\\b(?!\\$)",
651
+ "name": "support.class.js"
652
+ },
653
+ "expression-string-double": {
654
+ "begin": "\"",
655
+ "beginCaptures": {
656
+ "0": {
657
+ "name": "punctuation.definition.string.begin.js"
658
+ }
659
+ },
660
+ "end": "\"",
661
+ "endCaptures": {
662
+ "0": {
663
+ "name": "punctuation.definition.string.end.js"
664
+ }
665
+ },
666
+ "name": "string.quoted.double.js",
667
+ "patterns": [
668
+ {
669
+ "match": "\\\\(x\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)",
670
+ "name": "constant.character.escape.js"
671
+ },
672
+ {
673
+ "include": "#placeholder-patterns"
674
+ }
675
+ ]
676
+ },
677
+ "expression-string-escapes": {
678
+ "patterns": [
679
+ {
680
+ "match": "\\\\(x\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",
681
+ "name": "constant.character.escape.js"
682
+ }
683
+ ]
684
+ },
685
+ "expression-string-single": {
686
+ "begin": "'",
687
+ "beginCaptures": {
688
+ "0": {
689
+ "name": "punctuation.definition.string.begin.js"
690
+ }
691
+ },
692
+ "end": "'",
693
+ "endCaptures": {
694
+ "0": {
695
+ "name": "punctuation.definition.string.end.js"
696
+ }
697
+ },
698
+ "name": "string.quoted.single.js",
699
+ "patterns": [
700
+ {
701
+ "include": "#expression-string-escapes"
702
+ },
703
+ {
704
+ "include": "#placeholder-patterns"
705
+ }
706
+ ]
707
+ },
708
+ "expression-string-template": {
709
+ "begin": "`",
710
+ "beginCaptures": {
711
+ "0": {
712
+ "name": "punctuation.definition.string.begin.js"
713
+ }
714
+ },
715
+ "end": "`",
716
+ "endCaptures": {
717
+ "0": {
718
+ "name": "punctuation.definition.string.end.js"
719
+ }
720
+ },
721
+ "name": "string.quoted.other.template.js",
722
+ "patterns": [
723
+ {
724
+ "include": "#expression-string-escapes"
725
+ },
726
+ {
727
+ "begin": "\\$\\{",
728
+ "beginCaptures": {
729
+ "0": {
730
+ "name": "punctuation.section.embedded.begin.js"
731
+ }
732
+ },
733
+ "contentName": "source.js",
734
+ "end": "(\\})",
735
+ "endCaptures": {
736
+ "0": {
737
+ "name": "punctuation.section.embedded.end.js"
738
+ },
739
+ "1": {
740
+ "name": "source.js"
741
+ }
742
+ },
743
+ "name": "meta.embedded.line.js",
744
+ "patterns": [
745
+ {
746
+ "include": "#expression"
747
+ }
748
+ ]
749
+ }
750
+ ]
751
+ },
752
+ "expression-ternary-if": {
753
+ "begin": "\\?",
754
+ "end": ":",
755
+ "name": "meta.ternary-if.js",
756
+ "patterns": [
757
+ {
758
+ "include": "$self"
759
+ }
760
+ ]
761
+ },
762
+ "html-block-concise": {
763
+ "begin": "(\\s*)(-[-]+)\\n",
764
+ "captures": {
765
+ "2": {
766
+ "name": "keyword.operator.marko"
767
+ }
768
+ },
769
+ "end": "^(\\1\\2|(?!(\\1)))",
770
+ "name": "meta.section.marko-html-block",
771
+ "patterns": [
772
+ {
773
+ "include": "#cdata"
774
+ },
775
+ {
776
+ "include": "#tag-html"
777
+ },
778
+ {
779
+ "include": "#comment-html"
780
+ },
781
+ {
782
+ "include": "#js-code-line"
783
+ },
784
+ {
785
+ "include": "#js-code-block"
786
+ },
787
+ {
788
+ "include": "#placeholder-patterns"
789
+ }
790
+ ]
791
+ },
792
+ "html-line-block-concise": {
793
+ "applyEndPatternLast": 1,
794
+ "begin": "\\s*([-][-]+)\\n",
795
+ "beginCaptures": {
796
+ "1": {
797
+ "name": "keyword.operator.marko.blah"
798
+ }
799
+ },
800
+ "end": "(?!\\2)|(\\2\\1)",
801
+ "patterns": [
802
+ {
803
+ "include": "#cdata"
804
+ },
805
+ {
806
+ "include": "#tag-html"
807
+ },
808
+ {
809
+ "include": "#comment-html"
810
+ },
811
+ {
812
+ "include": "#placeholder-patterns"
813
+ }
814
+ ]
815
+ },
816
+ "html-line-concise": {
817
+ "begin": "\\s*([-][-]+)",
818
+ "beginCaptures": {
819
+ "1": {
820
+ "name": "keyword.operator.marko"
821
+ }
822
+ },
823
+ "end": "(?=\\n)",
824
+ "patterns": [
825
+ {
826
+ "include": "#cdata"
827
+ },
828
+ {
829
+ "include": "#tag-html"
830
+ },
831
+ {
832
+ "include": "#comment-html"
833
+ },
834
+ {
835
+ "include": "#placeholder-patterns"
836
+ }
837
+ ]
838
+ },
839
+ "js": {
840
+ "patterns": [
841
+ {
842
+ "include": "#comment-line"
843
+ },
844
+ {
845
+ "include": "#comment-block"
846
+ },
847
+ {
848
+ "applyEndPatternLast": 1,
849
+ "begin": "\\{",
850
+ "beginCaptures": {
851
+ "0": {
852
+ "name": "punctuation.section.scope.begin.js"
853
+ }
854
+ },
855
+ "end": "\\}",
856
+ "endCaptures": {
857
+ "0": {
858
+ "name": "punctuation.section.scope.end.js"
859
+ }
860
+ },
861
+ "patterns": [
862
+ {
863
+ "include": "#js"
864
+ }
865
+ ]
866
+ },
867
+ {
868
+ "applyEndPatternLast": 1,
869
+ "begin": "\\(",
870
+ "beginCaptures": {
871
+ "0": {
872
+ "name": "punctuation.section.scope.begin.js"
873
+ }
874
+ },
875
+ "end": "\\)",
876
+ "endCaptures": {
877
+ "0": {
878
+ "name": "punctuation.section.scope.end.js"
879
+ }
880
+ },
881
+ "patterns": [
882
+ {
883
+ "include": "#js"
884
+ }
885
+ ]
886
+ },
887
+ {
888
+ "applyEndPatternLast": 1,
889
+ "begin": "\\[",
890
+ "beginCaptures": {
891
+ "0": {
892
+ "name": "punctuation.section.scope.begin.js"
893
+ }
894
+ },
895
+ "end": "\\]",
896
+ "endCaptures": {
897
+ "0": {
898
+ "name": "punctuation.section.scope.end.js"
899
+ }
900
+ },
901
+ "patterns": [
902
+ {
903
+ "include": "#js"
904
+ }
905
+ ]
906
+ },
907
+ {
908
+ "match": "[.]([\\p{L}\\p{Nl}$_][\\p{L}\\p{Nl}$\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\x{200C}\\x{200D}]*)\\b"
909
+ },
910
+ {
911
+ "include": "#expression"
912
+ },
913
+ {
914
+ "match": "\\b(break|case|catch|continue|default|do|else|export|finally|for|if|return|switch|throw|try|while|with|import|from|await|async)\\b",
915
+ "name": "keyword.control.js"
916
+ },
917
+ {
918
+ "match": "(\\s+|\\b)(\\=\\>)(\\s+|\\b)",
919
+ "name": "storage.type.function.arrow.js"
920
+ },
921
+ {
922
+ "match": "\\;",
923
+ "name": "punctuation.terminator.statement.js"
924
+ },
925
+ {
926
+ "match": "\\b(function)\\b",
927
+ "name": "storage.type.function.js"
928
+ },
929
+ {
930
+ "match": "\\b(class)\\b",
931
+ "name": "entity.name.type.class.js"
932
+ },
933
+ {
934
+ "match": "\\bextends\\b",
935
+ "name": "entity.other.inherited-class.js"
936
+ },
937
+ {
938
+ "begin": "([\\p{L}\\p{Nl}$_][\\p{L}\\p{Nl}$\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\x{200C}\\x{200D}]*)\\s*(\\()(?=(?:[^\\(\\)]*)?\\)\\s*\\{)",
939
+ "beginCaptures": {
940
+ "1": {
941
+ "name": "entity.name.function.js"
942
+ },
943
+ "2": {
944
+ "name": "punctuation.definition.parameters.begin.js"
945
+ }
946
+ },
947
+ "end": "\\)",
948
+ "endCaptures": {
949
+ "0": {
950
+ "name": "punctuation.definition.parameters.END.js"
951
+ }
952
+ },
953
+ "name": "meta.method.js"
954
+ }
955
+ ]
956
+ },
957
+ "js-code-block": {
958
+ "applyEndPatternLast": 1,
959
+ "begin": "^\\s*([$])\\s",
960
+ "beginCaptures": {
961
+ "1": {
962
+ "name": "storage.modifier.embedded.js"
963
+ }
964
+ },
965
+ "contentName": "source.js.embedded",
966
+ "end": "(?=\\n)",
967
+ "patterns": [
968
+ {
969
+ "include": "#js"
970
+ }
971
+ ]
972
+ },
973
+ "open-tag-end": {
974
+ "begin": "(>)",
975
+ "beginCaptures": {
976
+ "1": {
977
+ "name": "punctuation.definition.tag.end.open.html"
978
+ }
979
+ },
980
+ "comment": "Concise style tag with CSS code.",
981
+ "end": "(?=</)",
982
+ "patterns": [
983
+ {
984
+ "include": "#cdata"
985
+ },
986
+ {
987
+ "include": "#comment-html"
988
+ },
989
+ {
990
+ "include": "#scriptlet"
991
+ },
992
+ {
993
+ "include": "#tag-html"
994
+ },
995
+ {
996
+ "include": "#js-code-block"
997
+ },
998
+ {
999
+ "include": "#placeholder-patterns"
1000
+ }
1001
+ ]
1002
+ },
1003
+ "open-tag-end-script": {
1004
+ "begin": "(>)",
1005
+ "beginCaptures": {
1006
+ "1": {
1007
+ "name": "punctuation.definition.tag.end.open.html"
1008
+ }
1009
+ },
1010
+ "comment": "Concise style tag with CSS code.",
1011
+ "end": "(?=</)",
1012
+ "patterns": [
1013
+ {
1014
+ "include": "#placeholder-patterns"
1015
+ },
1016
+ {
1017
+ "include": "#js"
1018
+ }
1019
+ ]
1020
+ },
1021
+ "open-tag-end-style": {
1022
+ "begin": "(>)",
1023
+ "beginCaptures": {
1024
+ "1": {
1025
+ "name": "punctuation.definition.tag.end.open.html"
1026
+ }
1027
+ },
1028
+ "comment": "Concise style tag with CSS code.",
1029
+ "end": "(?=</)",
1030
+ "patterns": [
1031
+ {
1032
+ "include": "#placeholder-patterns"
1033
+ },
1034
+ {
1035
+ "include": "source.css"
1036
+ }
1037
+ ]
1038
+ },
1039
+ "placeholder": {
1040
+ "applyEndPatternLast": 1,
1041
+ "begin": "[$][!]?\\{",
1042
+ "captures": {
1043
+ "0": {
1044
+ "name": "keyword.operator.marko"
1045
+ }
1046
+ },
1047
+ "comment": "${ } placeholder note: should be punctuation.section.embedded.js",
1048
+ "end": "\\}",
1049
+ "name": "meta.section.marko-placeholder",
1050
+ "patterns": [
1051
+ {
1052
+ "include": "#expression"
1053
+ }
1054
+ ]
1055
+ },
1056
+ "placeholder-escaped": {
1057
+ "comment": "\\${",
1058
+ "match": "\\\\[$][!]?[{]"
1059
+ },
1060
+ "placeholder-escaped-escaped": {
1061
+ "comment": "\\\\${",
1062
+ "match": "\\\\\\\\(?=[$][!]?[{])"
1063
+ },
1064
+ "placeholder-patterns": {
1065
+ "patterns": [
1066
+ {
1067
+ "include": "#placeholder-escaped-escaped"
1068
+ },
1069
+ {
1070
+ "include": "#placeholder-escaped"
1071
+ },
1072
+ {
1073
+ "include": "#placeholder"
1074
+ }
1075
+ ]
1076
+ },
1077
+ "scriptlet": {
1078
+ "applyEndPatternLast": 1,
1079
+ "begin": "<%",
1080
+ "captures": {
1081
+ "0": {
1082
+ "name": "keyword.operator.scriptlet.marko"
1083
+ }
1084
+ },
1085
+ "comment": "Scriptlet block",
1086
+ "end": "%>",
1087
+ "patterns": [
1088
+ {
1089
+ "include": "#js"
1090
+ }
1091
+ ]
1092
+ },
1093
+ "special-js-tags": {
1094
+ "applyEndPatternLast": 1,
1095
+ "begin": "^\\s*(?:(class)|(static)|(import))\\s",
1096
+ "beginCaptures": {
1097
+ "1": {
1098
+ "name": "storage.type.class.js"
1099
+ },
1100
+ "2": {
1101
+ "name": "storage.modifier.marko"
1102
+ },
1103
+ "3": {
1104
+ "name": "storage.modifier.marko"
1105
+ }
1106
+ },
1107
+ "contentName": "source.js.embedded",
1108
+ "end": "(?=\\n)",
1109
+ "patterns": [
1110
+ {
1111
+ "include": "#js"
1112
+ }
1113
+ ]
1114
+ },
1115
+ "tag-concise": {
1116
+ "patterns": [
1117
+ {
1118
+ "include": "#tag-name-custom-concise"
1119
+ },
1120
+ {
1121
+ "include": "#tag-name-concise"
1122
+ }
1123
+ ]
1124
+ },
1125
+ "tag-html": {
1126
+ "comment": "HTML tag within the non-concise syntax",
1127
+ "patterns": [
1128
+ {
1129
+ "include": "#tag-name-open-tag-only-html"
1130
+ },
1131
+ {
1132
+ "include": "#tag-name-script-html"
1133
+ },
1134
+ {
1135
+ "include": "#tag-name-style-html"
1136
+ },
1137
+ {
1138
+ "include": "#tag-name-shorthand-no-tag-name-html"
1139
+ },
1140
+ {
1141
+ "include": "#tag-name-shorthand-html"
1142
+ },
1143
+ {
1144
+ "include": "#tag-name-custom-html"
1145
+ },
1146
+ {
1147
+ "include": "#tag-name-html"
1148
+ }
1149
+ ]
1150
+ },
1151
+ "tag-name-concise": {
1152
+ "applyEndPatternLast": 1,
1153
+ "begin": "^\\s*(([a-zA-Z0-9_-]+)([.#][a-zA-Z0-9_.#-]*)?)(?=(\\s+(?![=])|$|\\())",
1154
+ "beginCaptures": {
1155
+ "1": {
1156
+ "name": "entity.name.tag.concise"
1157
+ },
1158
+ "3": {
1159
+ "name": "entity.other.attribute-name.shorthand"
1160
+ }
1161
+ },
1162
+ "comment": "A concise tag name",
1163
+ "end": "(?=\\n)",
1164
+ "patterns": [
1165
+ {
1166
+ "include": "#html-line-block-concise"
1167
+ },
1168
+ {
1169
+ "include": "#html-line-concise"
1170
+ },
1171
+ {
1172
+ "include": "#attr-stuff-concise"
1173
+ }
1174
+ ]
1175
+ },
1176
+ "tag-name-custom-concise": {
1177
+ "applyEndPatternLast": 1,
1178
+ "begin": "^\\s*(for|if|unless|else-if|else|var|assign|macro|invoke|include|app|await|[a-zA-Z0-9_]+([:-])[a-zA-Z0-9_:-]*|[@][a-zA-Z0-9_]+)(?=(\\s+(?![=])|$|[(]))",
1179
+ "beginCaptures": {
1180
+ "1": {
1181
+ "name": "support.function.marko-tag.concise"
1182
+ }
1183
+ },
1184
+ "comment": "A concise custom tag name",
1185
+ "end": "(?=\\n)",
1186
+ "patterns": [
1187
+ {
1188
+ "include": "#html-line-concise"
1189
+ },
1190
+ {
1191
+ "include": "#attr-stuff-concise"
1192
+ }
1193
+ ]
1194
+ },
1195
+ "tag-name-custom-html": {
1196
+ "begin": "(<)(for|if|unless|else-if|else|var|assign|macro|invoke|include|app|await|[a-zA-Z0-9_]+[-:][a-zA-Z0-9\\-_:]*|[@][a-zA-Z0-9_]+)(?=(>|/>|\\s|\\())",
1197
+ "beginCaptures": {
1198
+ "1": {
1199
+ "name": "punctuation.definition.tag.begin.open.html"
1200
+ },
1201
+ "2": {
1202
+ "name": "support.function.marko-tag.open.html"
1203
+ }
1204
+ },
1205
+ "comment": "The beginning of a custom/special HTML tag",
1206
+ "end": "(</)(\\2)?(>)|(/>)",
1207
+ "endCaptures": {
1208
+ "1": {
1209
+ "name": "punctuation.definition.tag.begin.close.html"
1210
+ },
1211
+ "2": {
1212
+ "name": "support.function.marko-tag.close.html"
1213
+ },
1214
+ "3": {
1215
+ "name": "punctuation.definition.tag.end.close.html"
1216
+ },
1217
+ "4": {
1218
+ "name": "punctuation.definition.tag.end.self-close.html"
1219
+ }
1220
+ },
1221
+ "patterns": [
1222
+ {
1223
+ "include": "#attr-stuff-html"
1224
+ },
1225
+ {
1226
+ "include": "#open-tag-end"
1227
+ }
1228
+ ]
1229
+ },
1230
+ "tag-name-html": {
1231
+ "begin": "(<)([a-zA-Z0-9]+)(?=(>|/>|\\s|\\())",
1232
+ "beginCaptures": {
1233
+ "1": {
1234
+ "name": "punctuation.definition.tag.begin.open.html"
1235
+ },
1236
+ "2": {
1237
+ "name": "entity.name.tag.open.html"
1238
+ }
1239
+ },
1240
+ "comment": "The beginning of a regular HTML tag in non-concise mode",
1241
+ "end": "(</)(\\2)?(>)|(/>)",
1242
+ "endCaptures": {
1243
+ "1": {
1244
+ "name": "punctuation.definition.tag.begin.close.html"
1245
+ },
1246
+ "2": {
1247
+ "name": "entity.name.tag.close.html"
1248
+ },
1249
+ "3": {
1250
+ "name": "punctuation.definition.tag.end.close.html"
1251
+ },
1252
+ "4": {
1253
+ "name": "punctuation.definition.tag.end.self-close.html"
1254
+ }
1255
+ },
1256
+ "patterns": [
1257
+ {
1258
+ "include": "#attr-stuff-html"
1259
+ },
1260
+ {
1261
+ "include": "#open-tag-end"
1262
+ }
1263
+ ]
1264
+ },
1265
+ "tag-name-open-tag-only-html": {
1266
+ "begin": "(<)(base|br|col|hr|embed|img|input|keygen|link|meta|param|source|track|wbr|lasso-img)(?=(>|/>|\\s|\\())",
1267
+ "beginCaptures": {
1268
+ "1": {
1269
+ "name": "punctuation.definition.tag.begin.open.html"
1270
+ },
1271
+ "2": {
1272
+ "name": "entity.name.tag.open.html"
1273
+ }
1274
+ },
1275
+ "comment": "HTML tags that are open tag only",
1276
+ "end": "(>|/>)",
1277
+ "endCaptures": {
1278
+ "1": {
1279
+ "name": "punctuation.definition.tag.end.self-close.html"
1280
+ }
1281
+ },
1282
+ "patterns": [
1283
+ {
1284
+ "include": "#attr-stuff-html"
1285
+ }
1286
+ ]
1287
+ },
1288
+ "tag-name-script-html": {
1289
+ "begin": "(<)(script)(?=(>|/>|\\s|\\())",
1290
+ "beginCaptures": {
1291
+ "1": {
1292
+ "name": "punctuation.definition.tag.begin.open.html"
1293
+ },
1294
+ "2": {
1295
+ "name": "entity.name.tag.script.open.html"
1296
+ }
1297
+ },
1298
+ "comment": "HTML style tag",
1299
+ "end": "(</)(script)?(>)|/>",
1300
+ "endCaptures": {
1301
+ "1": {
1302
+ "name": "punctuation.definition.tag.begin.close.html"
1303
+ },
1304
+ "2": {
1305
+ "name": "entity.name.tag.script.close.html"
1306
+ },
1307
+ "3": {
1308
+ "name": "punctuation.definition.tag.end.close.html"
1309
+ },
1310
+ "4": {
1311
+ "name": "punctuation.definition.tag.end.self-close.html"
1312
+ }
1313
+ },
1314
+ "patterns": [
1315
+ {
1316
+ "include": "#attr-stuff-html"
1317
+ },
1318
+ {
1319
+ "include": "#open-tag-end-script"
1320
+ }
1321
+ ]
1322
+ },
1323
+ "tag-name-shorthand-html": {
1324
+ "begin": "(<)(([a-zA-Z0-9_-]+)([#.][a-zA-Z0-9_#.:-]+))(?=(>|/>|\\s+(?![=])|\\())",
1325
+ "beginCaptures": {
1326
+ "1": {
1327
+ "name": "punctuation.definition.tag.begin.open.html"
1328
+ },
1329
+ "3": {
1330
+ "name": "entity.name.tag.open.html"
1331
+ },
1332
+ "4": {
1333
+ "name": "entity.other.attribute-name.shorthand"
1334
+ }
1335
+ },
1336
+ "comment": "HTML tag with shorthand ID/class parts",
1337
+ "end": "(</)((\\3)(\\4)?)?(>)|(/>)",
1338
+ "endCaptures": {
1339
+ "1": {
1340
+ "name": "punctuation.definition.tag.begin.close.html"
1341
+ },
1342
+ "3": {
1343
+ "name": "entity.name.tag.close.html"
1344
+ },
1345
+ "4": {
1346
+ "name": "entity.other.attribute-name.shorthand"
1347
+ },
1348
+ "5": {
1349
+ "name": "punctuation.definition.tag.end.close.html"
1350
+ },
1351
+ "6": {
1352
+ "name": "punctuation.definition.tag.end.self-close.html"
1353
+ }
1354
+ },
1355
+ "patterns": [
1356
+ {
1357
+ "include": "#attr-stuff-html"
1358
+ },
1359
+ {
1360
+ "include": "#open-tag-end"
1361
+ }
1362
+ ]
1363
+ },
1364
+ "tag-name-shorthand-no-tag-name-html": {
1365
+ "begin": "(<)([#.][a-zA-Z0-9_#.:-]+)(?=(>|/>|\\s|\\())",
1366
+ "beginCaptures": {
1367
+ "1": {
1368
+ "name": "punctuation.definition.tag.begin.open.html"
1369
+ },
1370
+ "2": {
1371
+ "name": "entity.other.attribute-name.shorthand"
1372
+ }
1373
+ },
1374
+ "comment": "HTML style tag",
1375
+ "end": "(</)(\\2|div)(>)|(/>)",
1376
+ "endCaptures": {
1377
+ "1": {
1378
+ "name": "punctuation.definition.tag.begin.close.html"
1379
+ },
1380
+ "2": {
1381
+ "name": "entity.name.tag.close.html"
1382
+ },
1383
+ "3": {
1384
+ "name": "punctuation.definition.tag.end.close.html"
1385
+ },
1386
+ "4": {
1387
+ "name": "punctuation.definition.tag.end.self-close.html"
1388
+ }
1389
+ },
1390
+ "patterns": [
1391
+ {
1392
+ "include": "#attr-stuff-html"
1393
+ },
1394
+ {
1395
+ "include": "#open-tag-end"
1396
+ }
1397
+ ]
1398
+ },
1399
+ "tag-name-style-html": {
1400
+ "begin": "(<)(style)(?=(>|/>|\\s|\\())",
1401
+ "beginCaptures": {
1402
+ "1": {
1403
+ "name": "punctuation.definition.tag.begin.open.html"
1404
+ },
1405
+ "2": {
1406
+ "name": "entity.name.tag.style.open.html"
1407
+ }
1408
+ },
1409
+ "comment": "HTML style tag",
1410
+ "end": "(</)(style)?(>)|(/>)",
1411
+ "endCaptures": {
1412
+ "1": {
1413
+ "name": "punctuation.definition.tag.begin.close.html"
1414
+ },
1415
+ "2": {
1416
+ "name": "entity.name.tag.style.close.html"
1417
+ },
1418
+ "3": {
1419
+ "name": "punctuation.definition.tag.end.close.html"
1420
+ },
1421
+ "4": {
1422
+ "name": "punctuation.definition.tag.end.self-close.html"
1423
+ }
1424
+ },
1425
+ "patterns": [
1426
+ {
1427
+ "include": "#attr-stuff-html"
1428
+ },
1429
+ {
1430
+ "include": "#open-tag-end-style"
1431
+ }
1432
+ ]
1433
+ },
1434
+ "tag-script-body-block": {
1435
+ "begin": "(\\s*-[-]+)",
1436
+ "comment": "HTML script tag with nested JavaScript code",
1437
+ "end": "(\\1)[.]*$",
1438
+ "patterns": [
1439
+ {
1440
+ "include": "#js"
1441
+ }
1442
+ ]
1443
+ },
1444
+ "tag-script-body-line": {
1445
+ "begin": "\\s+-[-]+\\s",
1446
+ "comment": "HTML script tag with nested JavaScript code",
1447
+ "end": "(?=\\n)",
1448
+ "patterns": [
1449
+ {
1450
+ "include": "#js"
1451
+ }
1452
+ ]
1453
+ },
1454
+ "tag-script-concise": {
1455
+ "applyEndPatternLast": 1,
1456
+ "begin": "^(\\s*)(script)(?=(\\s|$|\\())",
1457
+ "beginCaptures": {
1458
+ "2": {
1459
+ "name": "entity.name.tag.script.marko.concise"
1460
+ }
1461
+ },
1462
+ "comment": "HTML script tag with nested JavaScript code",
1463
+ "end": "^(?!(\\1\\s)|\\s*$)",
1464
+ "patterns": [
1465
+ {
1466
+ "include": "#attr-stuff-concise"
1467
+ },
1468
+ {
1469
+ "include": "#tag-script-body-line"
1470
+ },
1471
+ {
1472
+ "include": "#tag-script-body-block"
1473
+ }
1474
+ ]
1475
+ },
1476
+ "tag-style-body-block": {
1477
+ "begin": "(\\s*[-][-]+)",
1478
+ "comment": "HTML script tag with nested CSS code",
1479
+ "end": "(\\1)[.]*$",
1480
+ "patterns": [
1481
+ {
1482
+ "include": "source.css"
1483
+ }
1484
+ ]
1485
+ },
1486
+ "tag-style-body-line": {
1487
+ "begin": "\\s[-][-]+\\s",
1488
+ "comment": "HTML style tag with nested CSS code",
1489
+ "end": "(?=\\n)",
1490
+ "patterns": [
1491
+ {
1492
+ "include": "source.css"
1493
+ }
1494
+ ]
1495
+ },
1496
+ "tag-style-concise": {
1497
+ "applyEndPatternLast": 1,
1498
+ "begin": "^(\\s*)(style)(?=(\\s|$|\\())",
1499
+ "beginCaptures": {
1500
+ "2": {
1501
+ "name": "entity.name.tag.style.marko.concise"
1502
+ }
1503
+ },
1504
+ "comment": "style tag with CSS code.",
1505
+ "end": "^(?!(\\1\\s)|\\s*$)",
1506
+ "name": "meta.tag.other.style",
1507
+ "patterns": [
1508
+ {
1509
+ "include": "#attr-stuff-concise"
1510
+ },
1511
+ {
1512
+ "include": "#tag-style-body-line"
1513
+ },
1514
+ {
1515
+ "include": "#tag-style-body-block"
1516
+ }
1517
+ ]
1518
+ }
1519
+ },
1520
+ "scopeName": "text.marko",
1521
+ "uuid": "BC8F1816-9AB4-4571-97E8-787F6C925E07"
1522
+ }