github-linguist 4.8.8 → 4.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/hint.haskell.json +1123 -0
  3. data/grammars/hint.message.haskell.json +1147 -0
  4. data/grammars/hint.type.haskell.json +1120 -0
  5. data/grammars/source.asn.json +59 -0
  6. data/grammars/source.blitzmax.json +0 -2
  7. data/grammars/source.bsl.json +372 -0
  8. data/grammars/source.c++.json +67 -0
  9. data/grammars/source.c2hs.json +27 -0
  10. data/grammars/source.cabal.json +66 -0
  11. data/grammars/source.coffee.json +6 -5
  12. data/grammars/source.crystal.json +0 -11
  13. data/grammars/source.csound-score.json +3 -3
  14. data/grammars/source.csound.json +51 -15
  15. data/grammars/source.css.json +1 -1
  16. data/grammars/source.css.less.json +9 -5
  17. data/grammars/source.cython.json +42 -193
  18. data/grammars/source.d.json +7 -7
  19. data/grammars/source.elixir.json +2 -2
  20. data/grammars/source.forth.json +0 -2
  21. data/grammars/source.graphql.json +8 -2
  22. data/grammars/source.haskell.json +1089 -323
  23. data/grammars/source.hsc2hs.json +12 -0
  24. data/grammars/source.ideal.json +356 -0
  25. data/grammars/source.java.json +3 -0
  26. data/grammars/source.js.json +262 -131
  27. data/grammars/source.js.jsx.json +848 -256
  28. data/grammars/source.lsl.json +51 -103
  29. data/grammars/source.objc.json +1 -1
  30. data/grammars/source.parrot.pir.json +49 -15
  31. data/grammars/source.pic.json +868 -0
  32. data/grammars/source.purescript.json +114 -90
  33. data/grammars/source.python.json +11 -9
  34. data/grammars/source.regexp.babel.json +1 -1
  35. data/grammars/source.renpy.json +7 -7
  36. data/grammars/source.rexx.json +59 -0
  37. data/grammars/source.sas.json +8 -75
  38. data/grammars/source.sdbl.json +97 -0
  39. data/grammars/source.shell.json +1 -0
  40. data/grammars/source.smali.json +2 -2
  41. data/grammars/source.sqf.json +11 -11
  42. data/grammars/source.stan.json +60 -25
  43. data/grammars/source.tla.json +18 -6
  44. data/grammars/source.toc.json +5 -1
  45. data/grammars/source.ts.json +134 -31
  46. data/grammars/source.tsx.json +134 -31
  47. data/grammars/source.vhdl.json +150 -117
  48. data/grammars/source.viml.json +4 -4
  49. data/grammars/source.xquery.json +23 -5
  50. data/grammars/source.yaml.json +35 -19
  51. data/grammars/text.html.handlebars.json +2 -2
  52. data/grammars/text.html.php.blade.json +1 -1
  53. data/grammars/text.html.twig.json +1 -4
  54. data/grammars/text.html.vue.json +41 -1
  55. data/grammars/text.restructuredtext.json +56 -1
  56. data/grammars/text.roff.json +5089 -0
  57. data/grammars/text.runoff.json +321 -0
  58. data/grammars/text.slim.json +126 -105
  59. data/grammars/text.tex.latex.haskell.json +1335 -21
  60. data/lib/linguist/heuristics.rb +8 -0
  61. data/lib/linguist/languages.json +1 -1
  62. data/lib/linguist/languages.yml +58 -3
  63. data/lib/linguist/samples.json +5257 -76
  64. data/lib/linguist/version.rb +1 -1
  65. metadata +16 -4
  66. data/grammars/source.man.json +0 -53
  67. data/grammars/text.groff.json +0 -113
@@ -0,0 +1,321 @@
1
+ {
2
+ "name": "RUNOFF",
3
+ "scopeName": "text.runoff",
4
+ "fileTypes": [
5
+ "rnb",
6
+ "rnc",
7
+ "rnd",
8
+ "rne",
9
+ "rnh",
10
+ "rnl",
11
+ "rnm",
12
+ "rno",
13
+ "rnp",
14
+ "rns",
15
+ "rnt",
16
+ "rnx",
17
+ "run"
18
+ ],
19
+ "patterns": [
20
+ {
21
+ "include": "#main"
22
+ }
23
+ ],
24
+ "repository": {
25
+ "main": {
26
+ "patterns": [
27
+ {
28
+ "include": "#comment"
29
+ },
30
+ {
31
+ "include": "#underline"
32
+ },
33
+ {
34
+ "include": "#commands"
35
+ },
36
+ {
37
+ "include": "#special-characters"
38
+ }
39
+ ]
40
+ },
41
+ "comment": {
42
+ "name": "comment.line.runoff",
43
+ "begin": "^\\.[!*~]",
44
+ "end": "$",
45
+ "beginCaptures": {
46
+ "0": {
47
+ "name": "punctuation.definition.comment.runoff"
48
+ }
49
+ }
50
+ },
51
+ "underline": {
52
+ "name": "markup.underline.link.runoff",
53
+ "match": "[^_]\b(?=_)|(?<=_)\b[^_]"
54
+ },
55
+ "arguments": {
56
+ "patterns": [
57
+ {
58
+ "name": "constant.numeric.runoff",
59
+ "match": "[-+]?\\d+(?:\\.\\d+)?"
60
+ },
61
+ {
62
+ "name": "punctuation.separator.comma.runoff",
63
+ "match": ","
64
+ },
65
+ {
66
+ "name": "string.quoted.runoff",
67
+ "begin": "\"",
68
+ "end": "\"",
69
+ "beginCaptures": {
70
+ "0": {
71
+ "name": "punctuation.definition.string.begin.runoff"
72
+ }
73
+ },
74
+ "endCaptures": {
75
+ "0": {
76
+ "name": "punctuation.definition.string.end.runoff"
77
+ }
78
+ }
79
+ },
80
+ {
81
+ "name": "variable.parameter.runoff",
82
+ "match": "(?!\\.)([^\\s;,]+)",
83
+ "captures": {
84
+ "0": {
85
+ "name": "string.unquoted.runoff"
86
+ },
87
+ "1": {
88
+ "patterns": [
89
+ {
90
+ "include": "#name-innards"
91
+ }
92
+ ]
93
+ }
94
+ }
95
+ }
96
+ ]
97
+ },
98
+ "commands": {
99
+ "name": "meta.control-line.runoff",
100
+ "begin": "^\f*(?=\\.)",
101
+ "end": "$|;(?!\\.)",
102
+ "endCaptures": {
103
+ "0": {
104
+ "name": "punctuation.terminator.statement.runoff"
105
+ }
106
+ },
107
+ "patterns": [
108
+ {
109
+ "name": "comment.line.runoff",
110
+ "begin": "!",
111
+ "end": "$",
112
+ "beginCaptures": {
113
+ "0": "punctuation.definition.comment.runoff"
114
+ }
115
+ },
116
+ {
117
+ "name": "meta.condition.runoff",
118
+ "begin": "(?i)(?:^|(?<=;))((\\.)(?:IF|ELSE|ENDIF))(?=$|\\s|;)",
119
+ "end": "$|(;)|(?=!)",
120
+ "beginCaptures": {
121
+ "1": {
122
+ "name": "keyword.control.runoff"
123
+ },
124
+ "2": {
125
+ "name": "punctuation.definition.function.runoff"
126
+ }
127
+ },
128
+ "endCaptures": {
129
+ "1": {
130
+ "name": "punctuation.terminator.statement.runoff"
131
+ }
132
+ },
133
+ "patterns": [
134
+ {
135
+ "include": "#arguments"
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "contentName": "markup.raw.runoff",
141
+ "begin": "(?i)((\\.)LITERAL\\s*)(?:$|\\n)",
142
+ "end": "(?i)((\\.)END\\s+LITERAL)\\b",
143
+ "beginCaptures": {
144
+ "0": {
145
+ "name": "keyword.function.name.runoff"
146
+ },
147
+ "1": {
148
+ "name": "entity.name.function.runoff"
149
+ },
150
+ "2": {
151
+ "name": "punctuation.definition.function.runoff"
152
+ }
153
+ },
154
+ "endCaptures": {
155
+ "0": {
156
+ "name": "keyword.function.name.runoff"
157
+ },
158
+ "1": {
159
+ "name": "entity.name.function.runoff"
160
+ },
161
+ "2": {
162
+ "name": "punctuation.definition.function.runoff"
163
+ }
164
+ }
165
+ },
166
+ {
167
+ "contentName": "markup.raw.runoff",
168
+ "begin": "(?i)((\\.)LIT)\\s*(?:$|\\n)",
169
+ "end": "(?i)^(?=\\.EL(?:$|[\\s;!]))",
170
+ "beginCaptures": {
171
+ "0": {
172
+ "name": "keyword.function.name.runoff"
173
+ },
174
+ "1": {
175
+ "name": "entity.name.function.runoff"
176
+ },
177
+ "2": {
178
+ "name": "punctuation.definition.function.runoff"
179
+ }
180
+ }
181
+ },
182
+ {
183
+ "name": "meta.function.debugging-comment.runoff",
184
+ "begin": "(?i)((\\.)COMMENT)\\b",
185
+ "end": "$|(;)|(?=!)",
186
+ "contentName": "string.unquoted.runoff",
187
+ "beginCaptures": {
188
+ "0": {
189
+ "name": "keyword.function.name.runoff"
190
+ },
191
+ "1": {
192
+ "name": "entity.name.function.runoff"
193
+ },
194
+ "2": {
195
+ "name": "punctuation.definition.function.runoff"
196
+ }
197
+ },
198
+ "endCaptures": {
199
+ "1": {
200
+ "name": "punctuation.terminator.statement.runoff"
201
+ }
202
+ }
203
+ },
204
+ {
205
+ "name": "meta.function.runoff",
206
+ "begin": "(?i)((\\.)(?:END\\s+)?([^;\\s\\-+]+))",
207
+ "end": "(?x)\n$ | # EOL\n(;)?\\s*(?=\\.) | # Followed by another command\n(?=;\\s*[^.]) # No more commands, don’t highlight trailing text as arguments",
208
+ "patterns": [
209
+ {
210
+ "include": "#arguments"
211
+ }
212
+ ],
213
+ "beginCaptures": {
214
+ "0": {
215
+ "name": "keyword.function.name.runoff"
216
+ },
217
+ "1": {
218
+ "name": "entity.name.function.runoff"
219
+ },
220
+ "2": {
221
+ "name": "punctuation.definition.function.runoff"
222
+ },
223
+ "3": {
224
+ "patterns": [
225
+ {
226
+ "include": "#name-innards"
227
+ }
228
+ ]
229
+ }
230
+ },
231
+ "endCaptures": {
232
+ "1": {
233
+ "name": "punctuation.terminator.statement.runoff"
234
+ }
235
+ }
236
+ }
237
+ ]
238
+ },
239
+ "name-innards": {
240
+ "patterns": [
241
+ {
242
+ "include": "#special-characters"
243
+ },
244
+ {
245
+ "match": "\\.",
246
+ "name": "punctuation.delimiter.period.full-stop.runoff"
247
+ },
248
+ {
249
+ "match": "\\,",
250
+ "name": "punctuation.separator.comma.runoff"
251
+ },
252
+ {
253
+ "match": "\\d+(?=$|\\n|,|\\.(?!\\d))",
254
+ "name": "constant.numeric.runoff"
255
+ }
256
+ ]
257
+ },
258
+ "special-characters": {
259
+ "patterns": [
260
+ {
261
+ "name": "constant.character.escape.special-character.runoff",
262
+ "match": "(_)[!^\\\\#&_.]",
263
+ "captures": {
264
+ "1": {
265
+ "name": "punctuation.definition.escape.runoff"
266
+ }
267
+ }
268
+ },
269
+ {
270
+ "name": "keyword.operator.end-footnote.runoff",
271
+ "match": "^!"
272
+ },
273
+ {
274
+ "name": "constant.character.escape.uppercase.runoff",
275
+ "match": "\\^{1,2}",
276
+ "captures": {
277
+ "0": {
278
+ "name": "punctuation.definition.escape.runoff"
279
+ }
280
+ }
281
+ },
282
+ {
283
+ "name": "constant.character.escape.lowercase.runoff",
284
+ "match": "\\\\{1,2}",
285
+ "captures": {
286
+ "0": {
287
+ "name": "punctuation.definition.escape.runoff"
288
+ }
289
+ }
290
+ },
291
+ {
292
+ "match": "(&)([!^\\\\#&_.]*)(\\S+)",
293
+ "captures": {
294
+ "1": {
295
+ "name": "punctuation.definition.entity.runoff"
296
+ },
297
+ "2": {
298
+ "patterns": [
299
+ {
300
+ "include": "#special-characters"
301
+ }
302
+ ]
303
+ },
304
+ "3": {
305
+ "name": "markup.underline.link.runoff"
306
+ }
307
+ }
308
+ },
309
+ {
310
+ "name": "constant.character.escape.space.runoff",
311
+ "match": "#",
312
+ "captures": {
313
+ "0": {
314
+ "name": "punctuation.definition.escape.runoff"
315
+ }
316
+ }
317
+ }
318
+ ]
319
+ }
320
+ }
321
+ }
@@ -129,7 +129,37 @@
129
129
  "name": "text.scss.filter.slim",
130
130
  "patterns": [
131
131
  {
132
- "include": "source.sass"
132
+ "include": "source.scss"
133
+ }
134
+ ]
135
+ },
136
+ {
137
+ "begin": "^(\\s*)(less):$",
138
+ "beginCaptures": {
139
+ "2": {
140
+ "name": "constant.language.name.less.filter.slim"
141
+ }
142
+ },
143
+ "end": "^(?!(\\1\\s)|\\s*$)",
144
+ "name": "text.less.filter.slim",
145
+ "patterns": [
146
+ {
147
+ "include": "source.less"
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ "begin": "^(\\s*)(erb):$",
153
+ "beginCaptures": {
154
+ "2": {
155
+ "name": "constant.language.name.erb.filter.slim"
156
+ }
157
+ },
158
+ "end": "^(?!(\\1\\s)|\\s*$)",
159
+ "name": "text.erb.filter.slim",
160
+ "patterns": [
161
+ {
162
+ "include": "source.erb"
133
163
  }
134
164
  ]
135
165
  },
@@ -143,22 +173,35 @@
143
173
  "name": "meta.prolog.slim"
144
174
  },
145
175
  {
146
- "begin": "^(\\s*)(/)\\s*",
176
+ "begin": "^(\\s*)(/)\\s*.*$",
147
177
  "beginCaptures": {
148
- "2": {
178
+ "1": {
149
179
  "name": "punctuation.section.comment.slim"
150
180
  }
151
181
  },
152
182
  "end": "^(?!\\1 )",
153
- "name": "comment.block.slim",
183
+ "name": "comment.block.slim"
184
+ },
185
+ {
186
+ "captures": {
187
+ "1": {
188
+ "name": "punctuation.section.comment.slim"
189
+ }
190
+ },
191
+ "match": "^\\s*(/)\\s*\\S.*$\\n?",
192
+ "name": "comment.line.slash.slim"
193
+ },
194
+ {
195
+ "begin": "^\\s*(?=-)",
196
+ "end": "$",
154
197
  "patterns": [
155
198
  {
156
- "include": "text.slim"
199
+ "include": "#rubyline"
157
200
  }
158
201
  ]
159
202
  },
160
203
  {
161
- "begin": "^\\s*(?===|=|-|~)",
204
+ "begin": "(?==+|~)",
162
205
  "end": "$",
163
206
  "patterns": [
164
207
  {
@@ -167,49 +210,79 @@
167
210
  ]
168
211
  },
169
212
  {
170
- "include": "#inline-html-tag"
171
- },
172
- {
173
- "include": "#normal-html-tag"
213
+ "include": "#tag-attribute"
174
214
  },
175
215
  {
176
216
  "include": "#embedded-ruby"
177
217
  },
178
218
  {
179
- "begin": "^\\s*([\\w.#_-]*[\\w]+)\\s*",
219
+ "begin": "^\\s*(\\.|#|[a-zA-Z0-9]+)([\\w-]+)?",
180
220
  "captures": {
181
- "0": {
221
+ "1": {
182
222
  "name": "entity.name.tag.slim"
223
+ },
224
+ "2": {
225
+ "name": "entity.other.attribute-name.event.slim"
183
226
  }
184
227
  },
185
- "end": "$|(?!\\.|#|\\{|\\[|=|-|~|/)",
228
+ "comment": "1 - dot OR hash OR any combination of word, number; 2 - OPTIONAL any combination of word, number, dash or underscore (following a . or",
229
+ "end": "$|(?!\\.|#|=|:|-|~|/|\\}|\\]|\\*|\\s?[\\*\\{])",
230
+ "name": "meta.tag",
186
231
  "patterns": [
187
232
  {
188
- "begin": "\\{(?=.*\\}|.*\\|\\s*$)",
189
- "end": "\\}|$|^(?!.*\\|\\s*$)",
190
- "name": "meta.section.attributes.slim",
233
+ "begin": "(:[\\w\\d]+)+",
234
+ "comment": "XML",
235
+ "end": "$|\\s",
236
+ "name": "entity.name.tag.slim"
237
+ },
238
+ {
239
+ "begin": "(:\\s)(\\.|#|[a-zA-Z0-9]+)([\\w-]+)?",
240
+ "captures": {
241
+ "1": {
242
+ "name": "punctuation.definition.tag.end.slim"
243
+ },
244
+ "2": {
245
+ "name": "entity.name.tag.slim"
246
+ },
247
+ "3": {
248
+ "name": "entity.other.attribute-name.event.slim"
249
+ }
250
+ },
251
+ "comment": "Inline HTML / 1 - colon; 2 - dot OR hash OR any combination of word, number; 3 - OPTIONAL any combination of word, number, dash or underscore (following a . or",
252
+ "end": "$|(?!\\.|#|=|-|~|/|\\}|\\]|\\*|\\s?[\\*\\{])",
191
253
  "patterns": [
192
254
  {
193
- "include": "source.ruby.rails"
255
+ "include": "#root-class-id-tag"
194
256
  },
195
257
  {
196
- "include": "#continuation"
258
+ "include": "#tag-attribute"
197
259
  }
198
260
  ]
199
261
  },
200
262
  {
201
- "begin": "\\[(?=.*\\]|.*\\|\\s*$)",
202
- "end": "\\]|$|^(?!.*\\|\\s*$)",
203
- "name": "meta.section.object.slim",
263
+ "begin": "(\\*\\{)(?=.*\\}|.*\\|\\s*$)",
264
+ "beginCaptures": {
265
+ "1": {
266
+ "name": "punctuation.section.embedded.ruby"
267
+ }
268
+ },
269
+ "comment": "Splat attributes",
270
+ "end": "(\\})|$|^(?!.*\\|\\s*$)",
271
+ "endCaptures": {
272
+ "1": {
273
+ "name": "punctuation.section.embedded.ruby"
274
+ }
275
+ },
276
+ "name": "source.ruby.embedded.slim",
204
277
  "patterns": [
205
278
  {
206
- "include": "source.ruby.rails"
207
- },
208
- {
209
- "include": "#continuation"
279
+ "include": "#embedded-ruby"
210
280
  }
211
281
  ]
212
282
  },
283
+ {
284
+ "include": "#root-class-id-tag"
285
+ },
213
286
  {
214
287
  "include": "#rubyline"
215
288
  },
@@ -238,6 +311,16 @@
238
311
  "include": "text.html.basic"
239
312
  }
240
313
  ]
314
+ },
315
+ {
316
+ "begin": "(?=<[\\w\\d\\:]+)",
317
+ "comment": "Inline and root-level HTML tags",
318
+ "end": "$|\\/\\>",
319
+ "patterns": [
320
+ {
321
+ "include": "text.html.basic"
322
+ }
323
+ ]
241
324
  }
242
325
  ],
243
326
  "repository": {
@@ -319,84 +402,26 @@
319
402
  }
320
403
  ]
321
404
  },
322
- "inline-html-tag": {
323
- "begin": "^(\\s*([\\w.#_-]+( [\\w.#_-]+=(\".*?\"))*: )*)([\\w.#_-]+( [\\w.#_-]+=(\".*?\"))*:)(?=\\s)",
324
- "captures": {
325
- "1": {
326
- "name": "entity.name.tag.slim"
327
- },
328
- "2": {
329
- "name": "entity.name.tag.slim"
330
- },
331
- "3": {
332
- "name": "entity.name.tag.slim"
333
- },
334
- "4": {
335
- "name": "string.quoted.double.html"
336
- },
337
- "5": {
338
- "name": "entity.name.tag.slim"
339
- },
340
- "6": {
341
- "name": "entity.name.tag.slim"
342
- },
343
- "7": {
344
- "name": "string.quoted.double.html"
345
- }
346
- },
347
- "end": "$",
348
- "patterns": [
349
- {
350
- "include": "#normal-inline-html-tag"
351
- },
352
- {
353
- "include": "#tag-stuff"
354
- }
355
- ]
356
- },
357
405
  "interpolated-ruby": {
358
406
  "begin": "=(?=\\b)",
359
407
  "end": "\\s|\\w$",
360
408
  "name": "source.ruby.embedded.html"
361
409
  },
362
- "normal-html-tag": {
363
- "begin": "([\\w.#_-]+=)",
410
+ "root-class-id-tag": {
364
411
  "captures": {
365
412
  "1": {
366
- "name": "entity.name.tag.slim"
367
- }
368
- },
369
- "end": "$",
370
- "patterns": [
371
- {
372
- "include": "#tag-stuff"
373
- },
374
- {
375
- "include": "#string-double-quoted"
413
+ "name": "punctuation.separator.key-value.html"
376
414
  },
377
- {
378
- "include": "#string-single-quoted"
379
- }
380
- ]
381
- },
382
- "normal-inline-html-tag": {
383
- "begin": "([\\w.#_-]+)",
384
- "captures": {
385
- "1": {
386
- "name": "entity.name.tag.slim"
415
+ "2": {
416
+ "name": "entity.other.attribute-name.html"
387
417
  }
388
418
  },
389
- "end": "$",
390
- "patterns": [
391
- {
392
- "include": "#tag-stuff"
393
- }
394
- ]
419
+ "match": "(\\.|#)([\\w\\d\\-]+)"
395
420
  },
396
421
  "rubyline": {
397
- "begin": "(==|=)(<>|><|<'|'<|<|>|')?|-",
422
+ "begin": "(==|=)(<>|><|<'|'<|<|>)?|-",
398
423
  "contentName": "source.ruby.embedded.slim",
399
- "end": "(?<!\\\\|,|\\n)$",
424
+ "end": "(?<!\\\\|,|,\\n|\\\\\\n)$",
400
425
  "name": "meta.line.ruby.slim",
401
426
  "patterns": [
402
427
  {
@@ -413,7 +438,7 @@
413
438
  ]
414
439
  },
415
440
  "string-double-quoted": {
416
- "begin": "\"",
441
+ "begin": "(\")(?=.*\")",
417
442
  "beginCaptures": {
418
443
  "0": {
419
444
  "name": "punctuation.definition.string.begin.html"
@@ -437,7 +462,7 @@
437
462
  ]
438
463
  },
439
464
  "string-single-quoted": {
440
- "begin": "'",
465
+ "begin": "(')(?=.*')",
441
466
  "beginCaptures": {
442
467
  "0": {
443
468
  "name": "punctuation.definition.string.begin.html"
@@ -460,19 +485,21 @@
460
485
  }
461
486
  ]
462
487
  },
463
- "tag-id-attribute": {
464
- "begin": "\\b(id)\\b\\s*(=)",
488
+ "tag-attribute": {
489
+ "begin": "([\\w.#_-]+)=(?!\\s)(true|false|nil)?(\\s*\\(|\\{)?",
465
490
  "captures": {
466
491
  "1": {
467
- "name": "entity.other.attribute-name.id.html"
492
+ "name": "entity.other.attribute-name.event.slim"
468
493
  },
469
494
  "2": {
470
- "name": "punctuation.separator.key-value.html"
495
+ "name": "constant.language.slim"
471
496
  }
472
497
  },
473
- "end": "(?<='|\")",
474
- "name": "meta.attribute-with-value.id.html",
498
+ "end": "\\}|\\)|$",
475
499
  "patterns": [
500
+ {
501
+ "include": "#tag-stuff"
502
+ },
476
503
  {
477
504
  "include": "#string-double-quoted"
478
505
  },
@@ -484,13 +511,7 @@
484
511
  "tag-stuff": {
485
512
  "patterns": [
486
513
  {
487
- "include": "#inline-html-tag"
488
- },
489
- {
490
- "include": "#normal-html-tag"
491
- },
492
- {
493
- "include": "#tag-id-attribute"
514
+ "include": "#tag-attribute"
494
515
  },
495
516
  {
496
517
  "include": "#interpolated-ruby"