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
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "Jison Lex Injection",
3
+ "scopeName": "source.jisonlex-injection",
4
+ "injectionSelector": "L:meta.rule.action.jisonlex -comment",
5
+ "patterns": [
6
+ {
7
+ "name": "variable.language.jisonlex",
8
+ "match": "\\byy(?:l(?:eng|ineno|loc)|text)\\b"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,432 @@
1
+ {
2
+ "name": "Jison Lex",
3
+ "scopeName": "source.jisonlex",
4
+ "fileTypes": [
5
+ "jisonlex"
6
+ ],
7
+ "patterns": [
8
+ {
9
+ "begin": "%%",
10
+ "beginCaptures": {
11
+ "0": {
12
+ "name": "meta.separator.section.jisonlex"
13
+ }
14
+ },
15
+ "patterns": [
16
+ {
17
+ "begin": "^%%",
18
+ "beginCaptures": {
19
+ "0": {
20
+ "name": "meta.separator.section.jisonlex"
21
+ }
22
+ },
23
+ "patterns": [
24
+ {
25
+ "name": "meta.section.user-code.jisonlex",
26
+ "begin": "\\G",
27
+ "patterns": [
28
+ {
29
+ "include": "#user_code_section"
30
+ }
31
+ ]
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "name": "meta.section.rules.jisonlex",
37
+ "begin": "(?!%%)",
38
+ "end": "(?=^%%)",
39
+ "patterns": [
40
+ {
41
+ "include": "#rules_section"
42
+ }
43
+ ]
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "name": "meta.section.definitions.jisonlex",
49
+ "begin": "(?!%%)",
50
+ "end": "(?=%%)",
51
+ "patterns": [
52
+ {
53
+ "include": "#definitions_section"
54
+ }
55
+ ]
56
+ }
57
+ ],
58
+ "repository": {
59
+ "definitions_section": {
60
+ "patterns": [
61
+ {
62
+ "include": "source.jison#comments"
63
+ },
64
+ {
65
+ "include": "source.jison#include_declarations"
66
+ },
67
+ {
68
+ "name": "meta.definition.jisonlex",
69
+ "begin": "\\b[\\p{Alpha}_](?:[\\w-]*\\w)?\\b",
70
+ "end": "$",
71
+ "beginCaptures": {
72
+ "0": {
73
+ "name": "entity.name.variable.jisonlex"
74
+ }
75
+ },
76
+ "patterns": [
77
+ {
78
+ "include": "source.jison#comments"
79
+ },
80
+ {
81
+ "name": "string.regexp.jisonlex",
82
+ "begin": "(?=\\S)",
83
+ "end": "(?=\\s)",
84
+ "patterns": [
85
+ {
86
+ "include": "#regexp"
87
+ }
88
+ ]
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ "name": "meta.start-condition.jisonlex",
94
+ "begin": "%[sx]\\b",
95
+ "end": "$",
96
+ "beginCaptures": {
97
+ "0": {
98
+ "name": "keyword.other.start-condition.jisonlex"
99
+ }
100
+ },
101
+ "patterns": [
102
+ {
103
+ "include": "source.jison#comments"
104
+ },
105
+ {
106
+ "name": "entity.name.function.jisonlex",
107
+ "match": "\\b[\\p{Alpha}_](?:[\\w-]*\\w)?\\b"
108
+ },
109
+ {
110
+ "name": "invalid.illegal.jisonlex",
111
+ "match": "\\S"
112
+ }
113
+ ]
114
+ },
115
+ {
116
+ "include": "source.jison#options_declarations"
117
+ },
118
+ {
119
+ "name": "invalid.unimplemented.jisonlex",
120
+ "match": "%(?:array|pointer)"
121
+ },
122
+ {
123
+ "include": "source.jison#user_code_blocks"
124
+ }
125
+ ]
126
+ },
127
+ "rules_section": {
128
+ "patterns": [
129
+ {
130
+ "include": "source.jison#comments"
131
+ },
132
+ {
133
+ "name": "meta.start-conditions.jisonlex",
134
+ "begin": "(?:^|(?<=%\\}))<(?!<EOF>>)",
135
+ "end": ">",
136
+ "beginCaptures": {
137
+ "0": {
138
+ "name": "punctuation.definition.start-conditions.begin.jisonlex"
139
+ }
140
+ },
141
+ "endCaptures": {
142
+ "0": {
143
+ "name": "punctuation.definition.start-conditions.end.jisonlex"
144
+ }
145
+ },
146
+ "patterns": [
147
+ {
148
+ "name": "keyword.other.jisonlex",
149
+ "match": "\\bINITIAL\\b"
150
+ },
151
+ {
152
+ "name": "entity.name.function.jisonlex",
153
+ "match": "\\b[\\p{Alpha}_](?:[\\w-]*\\w)?\\b"
154
+ },
155
+ {
156
+ "name": "punctuation.separator.start-condition.jisonlex",
157
+ "match": ","
158
+ },
159
+ {
160
+ "name": "keyword.other.any-start-condition.jisonlex",
161
+ "match": "(?<=<)\\*(?=>)"
162
+ },
163
+ {
164
+ "name": "invalid.illegal.jisonlex",
165
+ "match": "."
166
+ }
167
+ ]
168
+ },
169
+ {
170
+ "name": "meta.rule.action.jisonlex",
171
+ "begin": "(?=%\\{)",
172
+ "end": "(?<=%\\})",
173
+ "patterns": [
174
+ {
175
+ "include": "source.jison#user_code_blocks"
176
+ }
177
+ ]
178
+ },
179
+ {
180
+ "name": "string.regexp.jisonlex",
181
+ "begin": "(?:^|(?<=>|%\\}))(?=\\S)",
182
+ "end": "(?=\\s|%\\{)",
183
+ "patterns": [
184
+ {
185
+ "include": "#regexp"
186
+ }
187
+ ]
188
+ },
189
+ {
190
+ "name": "meta.rule.action.jisonlex",
191
+ "begin": "(?=\\S)",
192
+ "end": "((//).*)?(?=$)",
193
+ "endCaptures": {
194
+ "1": {
195
+ "name": "comment.line.double-slash.js"
196
+ },
197
+ "2": {
198
+ "name": "punctuation.definition.comment.js"
199
+ }
200
+ },
201
+ "patterns": [
202
+ {
203
+ "include": "source.jison#include_declarations"
204
+ },
205
+ {
206
+ "include": "source.js"
207
+ }
208
+ ]
209
+ }
210
+ ]
211
+ },
212
+ "user_code_section": {
213
+ "patterns": [
214
+ {
215
+ "include": "source.jison#user_code_include_declarations"
216
+ },
217
+ {
218
+ "include": "source.js"
219
+ }
220
+ ]
221
+ },
222
+ "name_uses": {
223
+ "patterns": [
224
+ {
225
+ "name": "variable.other.jisonlex",
226
+ "match": "\\{[\\p{Alpha}_](?:[\\w-]*\\w)?\\}"
227
+ }
228
+ ]
229
+ },
230
+ "regexp": {
231
+ "patterns": [
232
+ {
233
+ "include": "source.jison#comments"
234
+ },
235
+ {
236
+ "name": "keyword.other.character-class.any.regexp.jisonlex",
237
+ "match": "\\."
238
+ },
239
+ {
240
+ "name": "keyword.other.anchor.word-boundary.regexp.jisonlex",
241
+ "match": "\\\\b"
242
+ },
243
+ {
244
+ "name": "keyword.other.anchor.non-word-boundary.regexp.jisonlex",
245
+ "match": "\\\\B"
246
+ },
247
+ {
248
+ "name": "keyword.other.anchor.start-of-input.regexp.jisonlex",
249
+ "match": "\\^"
250
+ },
251
+ {
252
+ "name": "keyword.other.anchor.end-of-input.regexp.jisonlex",
253
+ "match": "\\$"
254
+ },
255
+ {
256
+ "name": "keyword.other.back-reference.regexp.jisonlex",
257
+ "match": "\\\\[1-9]\\d*"
258
+ },
259
+ {
260
+ "name": "keyword.operator.quantifier.regexp.jisonlex",
261
+ "match": "(?:[+*?]|\\{(?:\\d+(?:,(?:\\d+)?)?|,\\d+)\\})\\??"
262
+ },
263
+ {
264
+ "name": "keyword.operator.alternation.regexp.jisonlex",
265
+ "match": "\\|"
266
+ },
267
+ {
268
+ "name": "meta.non-capturing.group.regexp.jisonlex",
269
+ "begin": "\\(\\?:",
270
+ "end": "\\)",
271
+ "beginCaptures": {
272
+ "0": {
273
+ "name": "punctuation.definition.group.begin.regexp.jisonlex"
274
+ }
275
+ },
276
+ "endCaptures": {
277
+ "0": {
278
+ "name": "punctuation.definition.group.end.regexp.jisonlex"
279
+ }
280
+ },
281
+ "patterns": [
282
+ {
283
+ "include": "#regexp"
284
+ }
285
+ ]
286
+ },
287
+ {
288
+ "name": "meta.lookahead.assertion.regexp.jisonlex",
289
+ "begin": "\\(\\?=",
290
+ "end": "\\)",
291
+ "beginCaptures": {
292
+ "0": {
293
+ "name": "punctuation.definition.group.begin.regexp.jisonlex"
294
+ }
295
+ },
296
+ "endCaptures": {
297
+ "0": {
298
+ "name": "punctuation.definition.group.end.regexp.jisonlex"
299
+ }
300
+ },
301
+ "patterns": [
302
+ {
303
+ "include": "#regexp"
304
+ }
305
+ ]
306
+ },
307
+ {
308
+ "name": "meta.negative.lookahead.assertion.regexp.jisonlex",
309
+ "begin": "\\(\\?!",
310
+ "end": "\\)",
311
+ "beginCaptures": {
312
+ "0": {
313
+ "name": "punctuation.definition.group.begin.regexp.jisonlex"
314
+ }
315
+ },
316
+ "endCaptures": {
317
+ "0": {
318
+ "name": "punctuation.definition.group.end.regexp.jisonlex"
319
+ }
320
+ },
321
+ "patterns": [
322
+ {
323
+ "include": "#regexp"
324
+ }
325
+ ]
326
+ },
327
+ {
328
+ "name": "meta.group.regexp.jisonlex",
329
+ "begin": "\\(",
330
+ "end": "\\)",
331
+ "beginCaptures": {
332
+ "0": {
333
+ "name": "punctuation.definition.group.begin.regexp.jisonlex"
334
+ }
335
+ },
336
+ "endCaptures": {
337
+ "0": {
338
+ "name": "punctuation.definition.group.end.regexp.jisonlex"
339
+ }
340
+ },
341
+ "patterns": [
342
+ {
343
+ "include": "#regexp"
344
+ }
345
+ ]
346
+ },
347
+ {
348
+ "name": "constant.other.character-class.set.regexp.jisonlex",
349
+ "begin": "(\\[)(\\^)?",
350
+ "end": "\\]",
351
+ "beginCaptures": {
352
+ "1": {
353
+ "name": "punctuation.definition.character-class.begin.regexp.jisonlex"
354
+ },
355
+ "2": {
356
+ "name": "keyword.operator.negation.regexp.jisonlex"
357
+ }
358
+ },
359
+ "endCaptures": {
360
+ "0": {
361
+ "name": "punctuation.definition.character-class.end.regexp.jisonlex"
362
+ }
363
+ },
364
+ "patterns": [
365
+ {
366
+ "include": "#name_uses"
367
+ },
368
+ {
369
+ "include": "#regexp_character_class"
370
+ }
371
+ ]
372
+ },
373
+ {
374
+ "include": "#regexp_character_class"
375
+ },
376
+ {
377
+ "include": "#name_uses"
378
+ },
379
+ {
380
+ "include": "source.jison#quoted_strings"
381
+ },
382
+ {
383
+ "name": "keyword.other.eof.regexp.jisonlex",
384
+ "match": "<<EOF>>"
385
+ },
386
+ {
387
+ "name": "keyword.operator.negative.lookahead.regexp.jisonlex",
388
+ "match": "/!"
389
+ },
390
+ {
391
+ "name": "keyword.operator.lookahead.regexp.jisonlex",
392
+ "match": "/"
393
+ }
394
+ ]
395
+ },
396
+ "regexp_character_class": {
397
+ "patterns": [
398
+ {
399
+ "name": "constant.character.escape.character-class.word.regexp.jisonlex",
400
+ "match": "\\\\w"
401
+ },
402
+ {
403
+ "name": "constant.character.escape.character-class.non-word.regexp.jisonlex",
404
+ "match": "\\\\W"
405
+ },
406
+ {
407
+ "name": "constant.character.escape.character-class.space.regexp.jisonlex",
408
+ "match": "\\\\s"
409
+ },
410
+ {
411
+ "name": "constant.character.escape.character-class.non-space.regexp.jisonlex",
412
+ "match": "\\\\S"
413
+ },
414
+ {
415
+ "name": "constant.character.escape.character-class.digit.regexp.jisonlex",
416
+ "match": "\\\\d"
417
+ },
418
+ {
419
+ "name": "constant.character.escape.character-class.non-digit.regexp.jisonlex",
420
+ "match": "\\\\D"
421
+ },
422
+ {
423
+ "name": "constant.character.escape.character-class.control.regexp.jisonlex",
424
+ "match": "\\\\c[A-Z]"
425
+ },
426
+ {
427
+ "include": "source.js#string_escapes"
428
+ }
429
+ ]
430
+ }
431
+ }
432
+ }
@@ -466,7 +466,7 @@
466
466
  ]
467
467
  },
468
468
  {
469
- "begin": "(?x)\n(?=\n (?!\n (break|case|catch|continue|do|else|finally|for|function|if|\n package|return|switch|throw|try|while|with)\n [\\s\\(]\n )\n (\n \\b(get|set) # Property getter/setter: get foo(){}\n (?:\\s+|(?=\\[)) # Followed by whitespace or square bracket\n )?\n ( # Method name\n \\b[a-zA-Z_$][\\w$]* # Fixed name\n |\n \\[ # Computed property key\n .*?[^\\[\\]\\s].*? # Contains at least one non-brace character\n \\]\n )\n \\s*\\(\\s* # Start of arguments list\n (\n \"[^\"]*\" | # Double-quoted string\n '[^']*' | # Single-quoted string\n [^\"()'] # Any non-bracket or non-quote\n )*\n \\)\\s* # End of arguments\n { # Beginning of body\n)",
469
+ "begin": "(?x)\n(?=\n (?!\n (break|case|catch|continue|do|else|finally|for|function|if|\n package|return|switch|throw|try|while|with)\n [\\s\\(]\n )\n (\n \\b(get|set) # Property getter/setter: get foo(){}\n (?:\\s+|(?=\\[)) # Followed by whitespace or square bracket\n )?+\n ( # Method name\n \\b[a-zA-Z_$][\\w$]* # Fixed name\n |\n \\[ # Computed property key\n [^\\[\\]]++ # Contains at least one non-brace character\n \\]\n )\n \\s*\\(\\s* # Start of arguments list\n (\n \"[^\"]*\" | # Double-quoted string\n '[^']*' | # Single-quoted string\n [^\"()'] # Any non-bracket or non-quote\n )*\n \\)\\s* # End of arguments\n { # Beginning of body\n)",
470
470
  "end": "(?<=})",
471
471
  "patterns": [
472
472
  {
@@ -1767,92 +1767,37 @@
1767
1767
  }
1768
1768
  ]
1769
1769
  },
1770
- "docblock": {
1770
+ "comments": {
1771
1771
  "patterns": [
1772
1772
  {
1773
- "match": "(?x) (?<!\\w)@\n(abstract|access|alias|arg|argument|async|attribute|augments|author|beta|borrows|bubbes|callback|chainable|class\n|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc\n|description|dict|emits|enum|event|example|exports?|extends|extension|extension_for|extensionfor|external|file\n|fileoverview|final|fires|for|function|global|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance\n|interface|kind|lends|license|listens|main|member|memberof|method|mixex|mixins?|modifies|module|name|namespace\n|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|preserve|private|prop|property\n|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress\n|template|this|throws|todo|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce)\\b",
1774
- "name": "storage.type.class.jsdoc"
1775
- },
1776
- {
1777
- "match": "(?x)\n(\n \\[\n [^\\]]+ # Optional [link text] preceding {@link syntax}\n \\]\n\n (?! # Check to avoid highlighting two sets of link text\n {\n @\\w+ # Tagname\n \\s+\n [^\\s|}]+ # Namepath/URL\n [\\s|] # Whitespace or bar delimiting description\n [^}]*\n }\n )\n)?\n\n(?:\n {\n (\n @\n (?: link # Name of tag\n | linkcode\n | linkplain\n | tutorial\n )\n )\n\n \\s+\n\n ([^\\s|}]+) # Namepath or URL\n\n (?: # Optional link text following link target\n [\\s|] # Bar or space separating target and text\n [^}]* # Actual text\n )?\n }\n)",
1778
1773
  "captures": {
1779
- "0": {
1780
- "name": "entity.name.type.instance.jsdoc"
1781
- },
1782
1774
  "1": {
1783
- "name": "constant.other.description.jsdoc"
1775
+ "name": "punctuation.section.begin.comment.js"
1784
1776
  },
1785
1777
  "2": {
1786
- "name": "storage.type.class.jsdoc"
1787
- },
1788
- "3": {
1789
- "name": "variable.other.description.jsdoc"
1778
+ "name": "punctuation.section.end.comment.js"
1790
1779
  }
1791
1780
  },
1792
- "name": "other.meta.jsdoc"
1793
- },
1794
- {
1795
- "match": "(?x)\n(?:(?<=@param)|(?<=@arg)|(?<=@argument)|(?<=@type))\n\\s+\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?:\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n [*?]? # {...*} Variable number of mixed types\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n (?:\n (?:\n \\(\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(...string)} variable number of parameters\n \\s*\\)\n )\n |\n (?:\n \\(\\s*\n (?:\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n (?:\n (?:\n (?:\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n )*\n (?:\n \\s*,\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(string, ...string)} variable number of parameters\n )?\n )\n |\n (?:\n =? # {function(string=)} optional parameter\n (?:\n (?<!=) # {function(string, string, number)} loop non-optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =?\n )*\n (?:\n (?<==) # {function(string, string=, number=)} loop optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =\n )*\n )\n )\n )?\n \\s*\\)\n )\n )\n (?: # {function(): string} function return type\n \\s*:\\s*\n [a-zA-Z_$][\\w$]*\n )?\n )?\n |\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n )\n)})\n\\s+\n(\n \\[ # [foo] optional parameter\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n (?:\n \\s*\n = # [foo=bar] Default parameter value\n \\s*\n (?:\n [\\w$.\\s]* | # [foo=bar] Unquoted\n \"[^\"]*\" | # [foo=\"bar\"] Double-quoted\n '[^']*' | # [foo='bar'] Single-quoted\n {[^{}]*} | # [foo={a:1}] Object literal\n \\[ [^\\[\\]]* \\] # [foo=[1,2]] Array literal\n )\n )?\n )\n \\s*\n \\] |\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n )?\n)\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1796
- "captures": {
1797
- "0": {
1798
- "name": "other.meta.jsdoc"
1799
- },
1800
- "1": {
1801
- "name": "entity.name.type.instance.jsdoc"
1802
- },
1803
- "2": {
1804
- "name": "variable.other.jsdoc"
1805
- },
1806
- "3": {
1807
- "name": "other.description.jsdoc",
1808
- "patterns": [
1809
- {
1810
- "include": "#docblock"
1811
- }
1812
- ]
1813
- }
1814
- }
1781
+ "match": "(/\\*)(\\*/)",
1782
+ "name": "comment.block.empty.js"
1815
1783
  },
1816
1784
  {
1817
- "match": "(?x)\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?:\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n [*?]? # {...*} Variable number of mixed types\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n (?:\n (?:\n \\(\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(...string)} variable number of parameters\n \\s*\\)\n )\n |\n (?:\n \\(\\s*\n (?:\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n (?:\n (?:\n (?:\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n )*\n (?:\n \\s*,\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(string, ...string)} variable number of parameters\n )?\n )\n |\n (?:\n =? # {function(string=)} optional parameter\n (?:\n (?<!=) # {function(string, string, number)} loop non-optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =?\n )*\n (?:\n (?<==) # {function(string, string=, number=)} loop optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =\n )*\n )\n )\n )?\n \\s*\\)\n )\n )\n (?: # {function(): string} function return type\n \\s*:\\s*\n [a-zA-Z_$][\\w$]*\n )?\n )?\n |\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n )\n)})\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1818
- "captures": {
1819
- "0": {
1820
- "name": "other.meta.jsdoc"
1821
- },
1822
- "1": {
1823
- "name": "entity.name.type.instance.jsdoc"
1824
- },
1825
- "2": {
1826
- "name": "other.description.jsdoc",
1827
- "patterns": [
1828
- {
1829
- "include": "#docblock"
1830
- }
1831
- ]
1832
- }
1833
- }
1834
- }
1835
- ]
1836
- },
1837
- "comments": {
1838
- "patterns": [
1839
- {
1840
- "begin": "/\\*\\*(?!/)",
1785
+ "begin": "/\\*\\*",
1841
1786
  "beginCaptures": {
1842
1787
  "0": {
1843
- "name": "punctuation.definition.comment.js"
1788
+ "name": "punctuation.section.begin.comment.js"
1844
1789
  }
1845
1790
  },
1846
1791
  "end": "\\*/",
1847
1792
  "endCaptures": {
1848
1793
  "0": {
1849
- "name": "punctuation.definition.comment.js"
1794
+ "name": "punctuation.section.end.comment.js"
1850
1795
  }
1851
1796
  },
1852
1797
  "name": "comment.block.documentation.js",
1853
1798
  "patterns": [
1854
1799
  {
1855
- "include": "#docblock"
1800
+ "include": "source.jsdoc"
1856
1801
  }
1857
1802
  ]
1858
1803
  },
@@ -1860,13 +1805,13 @@
1860
1805
  "begin": "/\\*",
1861
1806
  "beginCaptures": {
1862
1807
  "0": {
1863
- "name": "punctuation.definition.comment.js"
1808
+ "name": "punctuation.section.begin.comment.js"
1864
1809
  }
1865
1810
  },
1866
1811
  "end": "\\*/",
1867
1812
  "endCaptures": {
1868
1813
  "0": {
1869
- "name": "punctuation.definition.comment.js"
1814
+ "name": "punctuation.section.end.comment.js"
1870
1815
  }
1871
1816
  },
1872
1817
  "name": "comment.block.js"