github-linguist 7.5.1 → 7.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/annotation.liquidhaskell.haskell.json +122 -24
  3. data/grammars/etc.json +7 -0
  4. data/grammars/hint.haskell.json +122 -24
  5. data/grammars/hint.message.haskell.json +122 -24
  6. data/grammars/hint.type.haskell.json +122 -24
  7. data/grammars/injections.etc.json +48 -10
  8. data/grammars/source.abnf.json +180 -353
  9. data/grammars/source.ballerina.json +205 -50
  10. data/grammars/source.bnf.json +191 -0
  11. data/grammars/source.cabal.json +1 -1
  12. data/grammars/source.ditroff.desc.json +1 -1
  13. data/grammars/source.ebnf.json +157 -147
  14. data/grammars/source.editorconfig.json +30 -5
  15. data/grammars/source.emacs.lisp.json +4 -4
  16. data/grammars/source.gremlin.json +200 -0
  17. data/grammars/source.haproxy-config.json +65 -13
  18. data/grammars/source.haskell.json +122 -24
  19. data/grammars/source.hql.json +1 -1
  20. data/grammars/source.hsig.json +122 -24
  21. data/grammars/source.hx.json +5 -5
  22. data/grammars/source.hxml.json +4 -4
  23. data/grammars/source.ideal.json +4 -4
  24. data/grammars/source.igor.json +325 -0
  25. data/grammars/source.jlex.json +322 -0
  26. data/grammars/source.julia.json +132 -1
  27. data/grammars/source.lean.json +103 -54
  28. data/grammars/source.lex.json +232 -0
  29. data/grammars/source.lex.regexp.json +269 -0
  30. data/grammars/source.logos.json +1 -1
  31. data/grammars/source.meson.json +1 -1
  32. data/grammars/source.mlir.json +389 -0
  33. data/grammars/source.nanorc.json +3 -0
  34. data/grammars/source.pic.json +19 -19
  35. data/grammars/source.plist.json +336 -0
  36. data/grammars/source.powershell.json +2 -2
  37. data/grammars/source.purescript.json +2 -2
  38. data/grammars/source.rascal.json +1 -0
  39. data/grammars/source.regexp.extended.json +544 -6
  40. data/grammars/source.regexp.json +408 -31
  41. data/grammars/source.renpy.json +3 -1
  42. data/grammars/source.scala.json +199 -97
  43. data/grammars/source.smpl.json +314 -0
  44. data/grammars/source.solidity.json +1 -1
  45. data/grammars/source.sourcepawn.json +654 -0
  46. data/grammars/source.sqf.json +5 -1
  47. data/grammars/source.swift.json +56 -11
  48. data/grammars/source.sy.json +800 -0
  49. data/grammars/source.ts.json +64 -47
  50. data/grammars/source.tsx.json +65 -48
  51. data/grammars/source.v.json +1184 -0
  52. data/grammars/source.viml.json +31 -31
  53. data/grammars/source.wollok.json +1 -1
  54. data/grammars/source.xojo.json +2 -2
  55. data/grammars/source.yacc.json +626 -0
  56. data/grammars/source.yara.json +1 -1
  57. data/grammars/source.yasnippet.json +15 -25
  58. data/grammars/source.zeek.json +4 -4
  59. data/grammars/source.zig.json +594 -195
  60. data/grammars/text.eml.basic.json +19 -6
  61. data/grammars/text.html.php.blade.json +3 -3
  62. data/grammars/text.plain.json +18 -0
  63. data/grammars/text.roff.json +926 -437
  64. data/grammars/text.runoff.json +3 -3
  65. data/grammars/text.tex.latex.haskell.json +122 -24
  66. data/grammars/text.texinfo.json +1525 -0
  67. data/grammars/text.xml.plist.json +664 -0
  68. data/grammars/text.xml.svg.json +556 -0
  69. data/grammars/version +1 -1
  70. data/lib/linguist.rb +3 -1
  71. data/lib/linguist/VERSION +1 -1
  72. data/lib/linguist/generated.rb +62 -17
  73. data/lib/linguist/heuristics.yml +13 -0
  74. data/lib/linguist/language.rb +1 -11
  75. data/lib/linguist/languages.json +1 -1
  76. data/lib/linguist/languages.yml +179 -19
  77. data/lib/linguist/samples.json +2778 -732
  78. data/lib/linguist/strategy/manpage.rb +42 -0
  79. metadata +22 -5
  80. data/grammars/source.bison.json +0 -55
  81. data/grammars/source.sp.json +0 -113
@@ -0,0 +1,664 @@
1
+ {
2
+ "name": "Property List (XML)",
3
+ "scopeName": "text.xml.plist",
4
+ "patterns": [
5
+ {
6
+ "include": "#xml"
7
+ }
8
+ ],
9
+ "repository": {
10
+ "xml": {
11
+ "patterns": [
12
+ {
13
+ "begin": "((\u003c)((plist\\b)))",
14
+ "end": "((/)((plist))(\u003e))",
15
+ "patterns": [
16
+ {
17
+ "name": "meta.tag.plist.xml.plist",
18
+ "begin": "(?\u003c=\u003cplist)(?!\u003e)\\s*(?:(version)(=)(?:((\").*?(\"))|((').*?('))))?",
19
+ "end": "(?=\u003e)",
20
+ "beginCaptures": {
21
+ "1": {
22
+ "name": "entity.other.attribute-name.version.xml.plist"
23
+ },
24
+ "2": {
25
+ "name": "punctuation.separator.key-value.xml.plist"
26
+ },
27
+ "3": {
28
+ "name": "string.quoted.double.xml.plist"
29
+ },
30
+ "4": {
31
+ "name": "punctuation.definition.string.begin.xml.plist"
32
+ },
33
+ "5": {
34
+ "name": "punctuation.definition.string.end.xml.plist"
35
+ },
36
+ "6": {
37
+ "name": "string.quoted.single.xml.plist"
38
+ },
39
+ "7": {
40
+ "name": "punctuation.definition.string.begin.xml.plist"
41
+ },
42
+ "8": {
43
+ "name": "punctuation.definition.string.end.xml.plist"
44
+ }
45
+ }
46
+ },
47
+ {
48
+ "match": "((\u003e(\u003c)))(?=/plist)",
49
+ "captures": {
50
+ "1": {
51
+ "name": "meta.tag.plist.xml.plist"
52
+ },
53
+ "2": {
54
+ "name": "punctuation.definition.tag.xml.plist"
55
+ },
56
+ "3": {
57
+ "name": "meta.scope.between-tag-pair.xml.plist"
58
+ }
59
+ }
60
+ },
61
+ {
62
+ "begin": "((\u003e))(?!\u003c/plist)",
63
+ "end": "(\u003c)(?=/plist)",
64
+ "patterns": [
65
+ {
66
+ "include": "#xml_tags"
67
+ }
68
+ ],
69
+ "beginCaptures": {
70
+ "1": {
71
+ "name": "meta.tag.plist.xml.plist"
72
+ },
73
+ "2": {
74
+ "name": "punctuation.definition.tag.xml.plist"
75
+ }
76
+ },
77
+ "endCaptures": {
78
+ "0": {
79
+ "name": "meta.tag.plist.xml.plist"
80
+ },
81
+ "1": {
82
+ "name": "punctuation.definition.tag.xml.plist"
83
+ }
84
+ }
85
+ }
86
+ ],
87
+ "captures": {
88
+ "1": {
89
+ "name": "meta.tag.plist.xml.plist"
90
+ },
91
+ "2": {
92
+ "name": "punctuation.definition.tag.xml.plist"
93
+ },
94
+ "3": {
95
+ "name": "entity.name.tag.xml.plist"
96
+ },
97
+ "4": {
98
+ "name": "entity.name.tag.localname.xml.plist"
99
+ },
100
+ "5": {
101
+ "name": "punctuation.definition.tag.xml.plist"
102
+ }
103
+ }
104
+ },
105
+ {
106
+ "include": "#xml_invalid"
107
+ },
108
+ {
109
+ "include": "#xml_comment"
110
+ },
111
+ {
112
+ "include": "text.xml"
113
+ },
114
+ {
115
+ "include": "#xml_stray-char"
116
+ }
117
+ ]
118
+ },
119
+ "xml_comment": {
120
+ "name": "comment.block.xml.plist",
121
+ "begin": "\u003c!--",
122
+ "end": "(?\u003c!-)--\u003e",
123
+ "patterns": [
124
+ {
125
+ "name": "invalid.illegal.double-dash-not-allowed.xml.plist",
126
+ "match": "-(?=--\u003e)|--"
127
+ }
128
+ ],
129
+ "captures": {
130
+ "0": {
131
+ "name": "punctuation.definition.comment.xml.plist"
132
+ }
133
+ }
134
+ },
135
+ "xml_innertag": {
136
+ "patterns": [
137
+ {
138
+ "name": "constant.character.entity.xml.plist",
139
+ "match": "\u0026([a-zA-Z0-9_-]+|#[0-9]+|#x[0-9a-fA-F]+);"
140
+ },
141
+ {
142
+ "name": "invalid.illegal.bad-ampersand.xml.plist",
143
+ "match": "\u0026"
144
+ }
145
+ ]
146
+ },
147
+ "xml_invalid": {
148
+ "match": "((\u003c)/?(\\w+).*?(\u003e))",
149
+ "captures": {
150
+ "1": {
151
+ "name": "meta.tag.boolean.xml.plist"
152
+ },
153
+ "2": {
154
+ "name": "punctuation.definition.tag.xml.plist"
155
+ },
156
+ "3": {
157
+ "name": "invalid.illegal.tag-not-recognized.xml.plist"
158
+ },
159
+ "4": {
160
+ "name": "punctuation.definition.tag.xml.plist"
161
+ }
162
+ }
163
+ },
164
+ "xml_stray-char": {
165
+ "name": "invalid.illegal.character-data-not-allowed-here.xml.plist",
166
+ "match": "\\S"
167
+ },
168
+ "xml_tags": {
169
+ "patterns": [
170
+ {
171
+ "match": "((\u003c)((dict))(\u003e))(((\u003c)/)((dict))(\u003e))",
172
+ "captures": {
173
+ "1": {
174
+ "name": "meta.tag.dict.xml.plist"
175
+ },
176
+ "10": {
177
+ "name": "entity.name.tag.localname.xml.plist"
178
+ },
179
+ "11": {
180
+ "name": "punctuation.definition.tag.xml.plist"
181
+ },
182
+ "2": {
183
+ "name": "punctuation.definition.tag.xml.plist"
184
+ },
185
+ "3": {
186
+ "name": "entity.name.tag.xml.plist"
187
+ },
188
+ "4": {
189
+ "name": "entity.name.tag.localname.xml.plist"
190
+ },
191
+ "5": {
192
+ "name": "punctuation.definition.tag.xml.plist"
193
+ },
194
+ "6": {
195
+ "name": "meta.tag.dict.xml.plist"
196
+ },
197
+ "7": {
198
+ "name": "punctuation.definition.tag.xml.plist"
199
+ },
200
+ "8": {
201
+ "name": "meta.scope.between-tag-pair.xml.plist"
202
+ },
203
+ "9": {
204
+ "name": "entity.name.tag.xml.plist"
205
+ }
206
+ }
207
+ },
208
+ {
209
+ "match": "((\u003c)((array))(\u003e))(((\u003c)/)((array))(\u003e))",
210
+ "captures": {
211
+ "1": {
212
+ "name": "meta.tag.array.xml.plist"
213
+ },
214
+ "10": {
215
+ "name": "entity.name.tag.localname.xml.plist"
216
+ },
217
+ "11": {
218
+ "name": "punctuation.definition.tag.xml.plist"
219
+ },
220
+ "2": {
221
+ "name": "punctuation.definition.tag.xml.plist"
222
+ },
223
+ "3": {
224
+ "name": "entity.name.tag.xml.plist"
225
+ },
226
+ "4": {
227
+ "name": "entity.name.tag.localname.xml.plist"
228
+ },
229
+ "5": {
230
+ "name": "punctuation.definition.tag.xml.plist"
231
+ },
232
+ "6": {
233
+ "name": "meta.tag.array.xml.plist"
234
+ },
235
+ "7": {
236
+ "name": "punctuation.definition.tag.xml.plist"
237
+ },
238
+ "8": {
239
+ "name": "meta.scope.between-tag-pair.xml.plist"
240
+ },
241
+ "9": {
242
+ "name": "entity.name.tag.xml.plist"
243
+ }
244
+ }
245
+ },
246
+ {
247
+ "match": "((\u003c)((string))(\u003e))(((\u003c)/)((string))(\u003e))",
248
+ "captures": {
249
+ "1": {
250
+ "name": "meta.tag.string.xml.plist"
251
+ },
252
+ "10": {
253
+ "name": "entity.name.tag.localname.xml.plist"
254
+ },
255
+ "11": {
256
+ "name": "punctuation.definition.tag.xml.plist"
257
+ },
258
+ "2": {
259
+ "name": "punctuation.definition.tag.xml.plist"
260
+ },
261
+ "3": {
262
+ "name": "entity.name.tag.xml.plist"
263
+ },
264
+ "4": {
265
+ "name": "entity.name.tag.localname.xml.plist"
266
+ },
267
+ "5": {
268
+ "name": "punctuation.definition.tag.xml.plist"
269
+ },
270
+ "6": {
271
+ "name": "meta.tag.string.xml.plist"
272
+ },
273
+ "7": {
274
+ "name": "punctuation.definition.tag.xml.plist"
275
+ },
276
+ "8": {
277
+ "name": "meta.scope.between-tag-pair.xml.plist"
278
+ },
279
+ "9": {
280
+ "name": "entity.name.tag.xml.plist"
281
+ }
282
+ }
283
+ },
284
+ {
285
+ "contentName": "constant.other.name.xml.plist",
286
+ "begin": "((\u003c)((key))(\u003e))",
287
+ "end": "((\u003c/)((key))(\u003e))",
288
+ "patterns": [
289
+ {
290
+ "begin": "\u003c!\\[CDATA\\[",
291
+ "end": "]]\u003e",
292
+ "captures": {
293
+ "0": {
294
+ "name": "punctuation.definition.constant.xml"
295
+ }
296
+ }
297
+ }
298
+ ],
299
+ "captures": {
300
+ "1": {
301
+ "name": "meta.tag.key.xml.plist"
302
+ },
303
+ "2": {
304
+ "name": "punctuation.definition.tag.xml.plist"
305
+ },
306
+ "3": {
307
+ "name": "entity.name.tag.xml.plist"
308
+ },
309
+ "4": {
310
+ "name": "entity.name.tag.localname.xml.plist"
311
+ },
312
+ "5": {
313
+ "name": "punctuation.definition.tag.xml.plist"
314
+ }
315
+ }
316
+ },
317
+ {
318
+ "match": "((\u003c)((dict))\\s*?/(\u003e))",
319
+ "captures": {
320
+ "1": {
321
+ "name": "meta.tag.dict.xml.plist"
322
+ },
323
+ "2": {
324
+ "name": "punctuation.definition.tag.xml.plist"
325
+ },
326
+ "3": {
327
+ "name": "entity.name.tag.xml.plist"
328
+ },
329
+ "4": {
330
+ "name": "entity.name.tag.localname.xml.plist"
331
+ },
332
+ "5": {
333
+ "name": "punctuation.definition.tag.xml.plist"
334
+ }
335
+ }
336
+ },
337
+ {
338
+ "match": "((\u003c)((array))\\s*?/(\u003e))",
339
+ "captures": {
340
+ "1": {
341
+ "name": "meta.tag.array.xml.plist"
342
+ },
343
+ "2": {
344
+ "name": "punctuation.definition.tag.xml.plist"
345
+ },
346
+ "3": {
347
+ "name": "entity.name.tag.xml.plist"
348
+ },
349
+ "4": {
350
+ "name": "entity.name.tag.localname.xml.plist"
351
+ },
352
+ "5": {
353
+ "name": "punctuation.definition.tag.xml.plist"
354
+ }
355
+ }
356
+ },
357
+ {
358
+ "match": "((\u003c)((string))\\s*?/(\u003e))",
359
+ "captures": {
360
+ "1": {
361
+ "name": "meta.tag.string.xml.plist"
362
+ },
363
+ "2": {
364
+ "name": "punctuation.definition.tag.xml.plist"
365
+ },
366
+ "3": {
367
+ "name": "entity.name.tag.xml.plist"
368
+ },
369
+ "4": {
370
+ "name": "entity.name.tag.localname.xml.plist"
371
+ },
372
+ "5": {
373
+ "name": "punctuation.definition.tag.xml.plist"
374
+ }
375
+ }
376
+ },
377
+ {
378
+ "match": "((\u003c)((key))\\s*?/(\u003e))",
379
+ "captures": {
380
+ "1": {
381
+ "name": "meta.tag.key.xml.plist"
382
+ },
383
+ "2": {
384
+ "name": "punctuation.definition.tag.xml.plist"
385
+ },
386
+ "3": {
387
+ "name": "entity.name.tag.xml.plist"
388
+ },
389
+ "4": {
390
+ "name": "entity.name.tag.localname.xml.plist"
391
+ },
392
+ "5": {
393
+ "name": "punctuation.definition.tag.xml.plist"
394
+ }
395
+ }
396
+ },
397
+ {
398
+ "begin": "((\u003c)((dict))(\u003e))",
399
+ "end": "((\u003c/)((dict))(\u003e))",
400
+ "patterns": [
401
+ {
402
+ "include": "#xml_tags"
403
+ }
404
+ ],
405
+ "captures": {
406
+ "1": {
407
+ "name": "meta.tag.dict.xml.plist"
408
+ },
409
+ "2": {
410
+ "name": "punctuation.definition.tag.xml.plist"
411
+ },
412
+ "3": {
413
+ "name": "entity.name.tag.xml.plist"
414
+ },
415
+ "4": {
416
+ "name": "entity.name.tag.localname.xml.plist"
417
+ },
418
+ "5": {
419
+ "name": "punctuation.definition.tag.xml.plist"
420
+ }
421
+ }
422
+ },
423
+ {
424
+ "begin": "((\u003c)((array))(\u003e))",
425
+ "end": "((\u003c/)((array))(\u003e))",
426
+ "patterns": [
427
+ {
428
+ "include": "#xml_tags"
429
+ }
430
+ ],
431
+ "captures": {
432
+ "1": {
433
+ "name": "meta.tag.array.xml.plist"
434
+ },
435
+ "2": {
436
+ "name": "punctuation.definition.tag.xml.plist"
437
+ },
438
+ "3": {
439
+ "name": "entity.name.tag.xml.plist"
440
+ },
441
+ "4": {
442
+ "name": "entity.name.tag.localname.xml.plist"
443
+ },
444
+ "5": {
445
+ "name": "punctuation.definition.tag.xml.plist"
446
+ }
447
+ }
448
+ },
449
+ {
450
+ "contentName": "string.quoted.other.xml.plist",
451
+ "begin": "((\u003c)((string))(\u003e))",
452
+ "end": "((\u003c/)((string))(\u003e))",
453
+ "patterns": [
454
+ {
455
+ "include": "#xml_innertag"
456
+ },
457
+ {
458
+ "name": "string.unquoted.cdata.xml",
459
+ "begin": "\u003c!\\[CDATA\\[",
460
+ "end": "]]\u003e",
461
+ "captures": {
462
+ "0": {
463
+ "name": "punctuation.definition.string.xml"
464
+ }
465
+ }
466
+ }
467
+ ],
468
+ "captures": {
469
+ "1": {
470
+ "name": "meta.tag.string.xml.plist"
471
+ },
472
+ "2": {
473
+ "name": "punctuation.definition.tag.xml.plist"
474
+ },
475
+ "3": {
476
+ "name": "entity.name.tag.xml.plist"
477
+ },
478
+ "4": {
479
+ "name": "entity.name.tag.localname.xml.plist"
480
+ },
481
+ "5": {
482
+ "name": "punctuation.definition.tag.xml.plist"
483
+ }
484
+ }
485
+ },
486
+ {
487
+ "begin": "((\u003c)((real))(\u003e))",
488
+ "end": "((\u003c/)((real))(\u003e))",
489
+ "patterns": [
490
+ {
491
+ "begin": "(\u003c!\\[CDATA\\[)",
492
+ "end": "(]]\u003e)",
493
+ "patterns": [
494
+ {
495
+ "name": "constant.numeric.real.xml.plist",
496
+ "match": "[-+]?\\d+(\\.\\d*)?(E[-+]\\d+)?"
497
+ },
498
+ {
499
+ "name": "invalid.illegal.not-a-number.xml.plist",
500
+ "match": "."
501
+ }
502
+ ],
503
+ "captures": {
504
+ "0": {
505
+ "name": "punctuation.definition.constant.xml"
506
+ },
507
+ "1": {
508
+ "name": "constant.numeric.real.xml.plist"
509
+ }
510
+ }
511
+ },
512
+ {
513
+ "name": "constant.numeric.real.xml.plist",
514
+ "match": "[-+]?\\d+(\\.\\d*)?(E[-+]\\d+)?"
515
+ },
516
+ {
517
+ "name": "invalid.illegal.not-a-number.xml.plist",
518
+ "match": "."
519
+ }
520
+ ],
521
+ "captures": {
522
+ "1": {
523
+ "name": "meta.tag.real.xml.plist"
524
+ },
525
+ "2": {
526
+ "name": "punctuation.definition.tag.xml.plist"
527
+ },
528
+ "3": {
529
+ "name": "entity.name.tag.xml.plist"
530
+ },
531
+ "4": {
532
+ "name": "entity.name.tag.localname.xml.plist"
533
+ },
534
+ "5": {
535
+ "name": "punctuation.definition.tag.xml.plist"
536
+ }
537
+ }
538
+ },
539
+ {
540
+ "begin": "((\u003c)((integer))(\u003e))",
541
+ "end": "((\u003c/)((integer))(\u003e))",
542
+ "patterns": [
543
+ {
544
+ "name": "constant.numeric.integer.xml.plist",
545
+ "match": "[-+]?\\d+"
546
+ },
547
+ {
548
+ "name": "invalid.illegal.not-a-number.xml.plist",
549
+ "match": "."
550
+ }
551
+ ],
552
+ "captures": {
553
+ "1": {
554
+ "name": "meta.tag.integer.xml.plist"
555
+ },
556
+ "2": {
557
+ "name": "punctuation.definition.tag.xml.plist"
558
+ },
559
+ "3": {
560
+ "name": "entity.name.tag.xml.plist"
561
+ },
562
+ "4": {
563
+ "name": "entity.name.tag.localname.xml.plist"
564
+ },
565
+ "5": {
566
+ "name": "punctuation.definition.tag.xml.plist"
567
+ }
568
+ }
569
+ },
570
+ {
571
+ "match": "((\u003c)((true|false))\\s*?(/\u003e))",
572
+ "captures": {
573
+ "1": {
574
+ "name": "meta.tag.boolean.xml.plist"
575
+ },
576
+ "2": {
577
+ "name": "punctuation.definition.tag.xml.plist"
578
+ },
579
+ "3": {
580
+ "name": "entity.name.tag.xml.plist"
581
+ },
582
+ "4": {
583
+ "name": "entity.name.tag.localname.xml.plist"
584
+ },
585
+ "5": {
586
+ "name": "punctuation.definition.tag.xml.plist"
587
+ }
588
+ }
589
+ },
590
+ {
591
+ "begin": "((\u003c)((data))(\u003e))",
592
+ "end": "((\u003c/)((data))(\u003e))",
593
+ "patterns": [
594
+ {
595
+ "name": "constant.numeric.base64.xml.plist",
596
+ "match": "[A-Za-z0-9+/]"
597
+ },
598
+ {
599
+ "name": "constant.numeric.base64.xml.plist",
600
+ "match": "="
601
+ },
602
+ {
603
+ "name": "invalid.illegal.invalid-character.xml.plist",
604
+ "match": "[^ \\n\\t]"
605
+ }
606
+ ],
607
+ "captures": {
608
+ "1": {
609
+ "name": "meta.tag.data.xml.plist"
610
+ },
611
+ "2": {
612
+ "name": "punctuation.definition.tag.xml.plist"
613
+ },
614
+ "3": {
615
+ "name": "entity.name.tag.xml.plist"
616
+ },
617
+ "4": {
618
+ "name": "entity.name.tag.localname.xml.plist"
619
+ },
620
+ "5": {
621
+ "name": "punctuation.definition.tag.xml.plist"
622
+ }
623
+ }
624
+ },
625
+ {
626
+ "begin": "((\u003c)((date))(\u003e))",
627
+ "end": "((\u003c/)((date))(\u003e))",
628
+ "patterns": [
629
+ {
630
+ "name": "constant.other.date.xml.plist",
631
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t[0-9]{4}\t\t\t\t\t\t# Year\n\t\t\t\t\t\t\t\t\t\t-\t\t\t\t\t\t\t\t# Divider\n\t\t\t\t\t\t\t\t\t\t(0[1-9]|1[012])\t\t\t\t\t# Month\n\t\t\t\t\t\t\t\t\t\t-\t\t\t\t\t\t\t\t# Divider\n\t\t\t\t\t\t\t\t\t\t(?!00|3[2-9])[0-3][0-9]\t\t\t# Day\n\t\t\t\t\t\t\t\t\t\tT\t\t\t\t\t\t\t\t# Separator\n\t\t\t\t\t\t\t\t\t\t(?!2[5-9])[0-2][0-9]\t\t\t# Hour\n\t\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t# Divider\n\t\t\t\t\t\t\t\t\t\t[0-5][0-9]\t\t\t\t\t\t# Minute\n\t\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t# Divider\n\t\t\t\t\t\t\t\t\t\t(?!6[1-9])[0-6][0-9]\t\t\t# Second\n\t\t\t\t\t\t\t\t\t\tZ\t\t\t\t\t\t\t\t# Zulu\n\t\t\t\t\t\t\t\t\t"
632
+ }
633
+ ],
634
+ "captures": {
635
+ "1": {
636
+ "name": "meta.tag.date.xml.plist"
637
+ },
638
+ "2": {
639
+ "name": "punctuation.definition.tag.xml.plist"
640
+ },
641
+ "3": {
642
+ "name": "entity.name.tag.xml.plist"
643
+ },
644
+ "4": {
645
+ "name": "entity.name.tag.localname.xml.plist"
646
+ },
647
+ "5": {
648
+ "name": "punctuation.definition.tag.xml.plist"
649
+ }
650
+ }
651
+ },
652
+ {
653
+ "include": "#xml_invalid"
654
+ },
655
+ {
656
+ "include": "#xml_comment"
657
+ },
658
+ {
659
+ "include": "#xml_stray-char"
660
+ }
661
+ ]
662
+ }
663
+ }
664
+ }