github-linguist 8.0.1 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/go.mod.json +1 -1
  3. data/grammars/liquid.injection.json +1 -1
  4. data/grammars/markdown.vue.codeblock.json +1 -0
  5. data/grammars/mdx.vue.codeblock.json +1 -0
  6. data/grammars/source.QB64.json +1 -0
  7. data/grammars/source.abap.json +1 -1
  8. data/grammars/source.abl.json +1 -1
  9. data/grammars/source.angelscript.json +1 -1
  10. data/grammars/source.answersetprogramming.json +1 -0
  11. data/grammars/source.apacheconf.json +1 -0
  12. data/grammars/source.assembly.json +1 -1
  13. data/grammars/source.ats.json +1 -1
  14. data/grammars/source.basic.json +1 -1
  15. data/grammars/source.bb.json +1 -1
  16. data/grammars/source.brs.json +1 -1
  17. data/grammars/source.bsl.json +1 -1
  18. data/grammars/source.bst.json +1 -0
  19. data/grammars/source.c.linker.json +1 -0
  20. data/grammars/source.cairo0.json +1 -1
  21. data/grammars/source.cmake.json +1 -1
  22. data/grammars/source.cmakecache.json +1 -0
  23. data/grammars/source.cobol.json +1 -1
  24. data/grammars/source.cs.json +1 -1
  25. data/grammars/source.curry.json +1 -1
  26. data/grammars/source.dart.json +1 -1
  27. data/grammars/source.dds.dspf.json +1 -1
  28. data/grammars/source.erlang.json +1 -1
  29. data/grammars/source.fsharp.json +1 -1
  30. data/grammars/source.gdscript.json +1 -1
  31. data/grammars/source.git-revlist.json +1 -1
  32. data/grammars/source.gleam.json +1 -1
  33. data/grammars/source.graphql.json +1 -1
  34. data/grammars/source.hack.json +1 -1
  35. data/grammars/source.hcl.json +1 -1
  36. data/grammars/source.hcl.terraform.json +1 -1
  37. data/grammars/source.ice.json +1 -1
  38. data/grammars/source.ispc.json +1 -0
  39. data/grammars/source.jai.json +1 -0
  40. data/grammars/source.json.comments.json +1 -0
  41. data/grammars/source.julia.json +1 -1
  42. data/grammars/source.just.json +1 -1
  43. data/grammars/source.kdl.json +1 -0
  44. data/grammars/source.lean.markdown.json +1 -1
  45. data/grammars/source.lean4.markdown.json +1 -1
  46. data/grammars/source.luau.json +1 -1
  47. data/grammars/source.matlab.json +1 -1
  48. data/grammars/source.mdx.astro.json +1 -0
  49. data/grammars/source.mdx.json +1 -1
  50. data/grammars/source.mo.json +1 -1
  51. data/grammars/source.moonbit.json +1 -0
  52. data/grammars/source.msg.json +1 -0
  53. data/grammars/source.mzn.json +1 -0
  54. data/grammars/source.ned.json +1 -0
  55. data/grammars/source.nr.json +1 -1
  56. data/grammars/source.nushell.json +1 -1
  57. data/grammars/source.odin.json +1 -1
  58. data/grammars/source.openesql.json +1 -0
  59. data/grammars/source.overpassql.json +1 -0
  60. data/grammars/source.p4.json +1 -1
  61. data/grammars/source.polar.json +1 -1
  62. data/grammars/source.powerbuilder.json +1 -1
  63. data/grammars/source.prisma.json +1 -1
  64. data/grammars/source.purescript.json +1 -1
  65. data/grammars/source.ql.json +1 -1
  66. data/grammars/source.qsharp.json +1 -1
  67. data/grammars/source.rascal.json +1 -1
  68. data/grammars/source.rescript.json +1 -1
  69. data/grammars/source.rpgle.json +1 -1
  70. data/grammars/source.scala.json +1 -1
  71. data/grammars/source.scm.json +1 -0
  72. data/grammars/source.sdbl.json +1 -1
  73. data/grammars/source.slang.json +1 -0
  74. data/grammars/source.slice.json +1 -1
  75. data/grammars/source.sourcepawn.json +1 -1
  76. data/grammars/source.stan.json +1 -1
  77. data/grammars/source.swift.json +1 -1
  78. data/grammars/source.tact.json +1 -0
  79. data/grammars/source.talon.json +1 -1
  80. data/grammars/source.templ.json +1 -1
  81. data/grammars/source.textgrid.json +1 -1
  82. data/grammars/source.toc.json +1 -1
  83. data/grammars/source.ts.json +1 -1
  84. data/grammars/source.ts.prismaClientRawSQL.json +1 -1
  85. data/grammars/source.tsp.json +1 -0
  86. data/grammars/source.tsx.json +1 -1
  87. data/grammars/source.typst.json +1 -1
  88. data/grammars/source.vba.json +1 -1
  89. data/grammars/source.vue.json +1 -0
  90. data/grammars/source.wdl.json +1 -1
  91. data/grammars/source.xmake.json +1 -0
  92. data/grammars/text.adblock.json +1 -1
  93. data/grammars/text.html.liquid.json +1 -1
  94. data/grammars/text.html.markdown.d2.json +1 -1
  95. data/grammars/text.md.json +1 -1
  96. data/grammars/text.rtf.json +1 -1
  97. data/grammars/version +1 -1
  98. data/grammars/vue.directives.json +1 -0
  99. data/grammars/vue.interpolations.json +1 -0
  100. data/grammars/vue.sfc.style.variable.injection.json +1 -0
  101. data/lib/linguist/VERSION +1 -1
  102. data/lib/linguist/generated.rb +32 -1
  103. data/lib/linguist/generic.yml +1 -0
  104. data/lib/linguist/heuristics.yml +109 -25
  105. data/lib/linguist/languages.json +1 -1
  106. data/lib/linguist/languages.yml +232 -10
  107. data/lib/linguist/lazy_blob.rb +15 -7
  108. data/lib/linguist/repository.rb +18 -13
  109. data/lib/linguist/samples.json +1 -1
  110. data/lib/linguist/shebang.rb +1 -1
  111. data/lib/linguist/source/diff.rb +72 -0
  112. data/lib/linguist/source/repository.rb +64 -0
  113. data/lib/linguist/source/rugged.rb +95 -0
  114. metadata +34 -9
  115. data/grammars/source.apache-config.json +0 -1
  116. data/grammars/source.apache-config.mod_perl.json +0 -1
  117. data/grammars/source.cache.cmake.json +0 -1
  118. data/grammars/text.html.erlang.yaws.json +0 -1
  119. data/grammars/text.html.vue.json +0 -1
  120. data/grammars/text.mdx.astro.codeblock.json +0 -1
@@ -59,7 +59,7 @@ module Linguist
59
59
 
60
60
  # Check for multiline shebang hacks that call `exec`
61
61
  if script == 'sh' &&
62
- data.lines.first(5).any? { |l| l.match(/exec (\w+).+\$0.+\$@/) }
62
+ data.lines.first(5).any? { |l| l.match(/exec (\w+)[\s"']+\$0[\s"']+\$@/) }
63
63
  script = $1
64
64
  end
65
65
 
@@ -0,0 +1,72 @@
1
+ require 'linguist/generated'
2
+ require 'cgi'
3
+ require 'charlock_holmes'
4
+ require 'mini_mime'
5
+ require 'yaml'
6
+
7
+ module Linguist
8
+ module Source
9
+ # Diff is an interface representing a diff between two trees. It is composed
10
+ # of a collection of iterable deltas between before/after states of files.
11
+ class Diff
12
+ # A Delta represents a single file's before/after state in a diff.
13
+ class Delta
14
+ # Public: get the status of the file's "after" state as compared to
15
+ # "before". Valid status values include:
16
+ #
17
+ # - :added
18
+ # - :deleted
19
+ # - :modified
20
+ # - :renamed
21
+ # - :copied
22
+ # - :ignored
23
+ # - :untracked
24
+ # - :typechange
25
+ #
26
+ # Returns the status.
27
+ def status
28
+ raise NotImplementedError
29
+ end
30
+
31
+ # Public: determine whether the file delta is binary.
32
+ #
33
+ # Returns true if the delta is binary, false otherwise.
34
+ def binary?
35
+ raise NotImplementedError
36
+ end
37
+
38
+ # Public: get the metadata of the "before" file in the delta. The
39
+ # metadata is represented as a Hash with the keys:
40
+ #
41
+ # - :path (string)
42
+ # - :oid (string)
43
+ # - :mode (integer)
44
+ #
45
+ # Returns the entry metadata hash.
46
+ def old_file
47
+ raise NotImplementedError
48
+ end
49
+
50
+ # Public: get the metadata of the "after" file in the delta. The
51
+ # metadata is represented as a Hash with the keys:
52
+ #
53
+ # - :path (string)
54
+ # - :oid (string)
55
+ # - :mode (integer)
56
+ #
57
+ # Returns the entry metadata hash.
58
+ def new_file
59
+ raise NotImplementedError
60
+ end
61
+ end
62
+
63
+ # Public: iterate through each delta of the given diff. Yields a single
64
+ # delta to the given block.
65
+ #
66
+ # Returns nothing.
67
+ def each_delta
68
+ raise NotImplementedError
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,64 @@
1
+ module Linguist
2
+ module Source
3
+ # Repository is an interface for providing direct access to functionality in
4
+ # a repository of files whose contents can be scanned for language
5
+ # information.
6
+ class Repository
7
+ # Public: get the number of entries in the root tree of the given commit,
8
+ # with an optional maximum value.
9
+ #
10
+ # commit_id - the string unique identifier of the commit to analyze.
11
+ # limit - (Optional) the integer maximum number of tree entries to
12
+ # count.
13
+ #
14
+ # Returns the number of entries in the tree or 'limit', whichever is
15
+ # smaller.
16
+ def get_tree_size(commit_id, limit = nil)
17
+ raise NotImplementedError
18
+ end
19
+
20
+ # Public: set the commit whose .gitattributes file(s) should be used as
21
+ # the source of attribute information in 'load_attributes_for_path'.
22
+ #
23
+ # commit_id - the string unique identifier of the attribute source commit.
24
+ #
25
+ # Returns nothing.
26
+ def set_attribute_source(commit_id)
27
+ raise NotImplementedError
28
+ end
29
+
30
+ # Public: read the data and size information for the specified file blob.
31
+ #
32
+ # blob_id - the string unique identifier of the blob to read.
33
+ # max_size - the integer maximum size in bytes to read from the blob.
34
+ #
35
+ # Returns the (possibly truncated) byte string of blob content and
36
+ # the full, untruncated size of the blob.
37
+ def load_blob(blob_id, max_size)
38
+ raise NotImplementedError
39
+ end
40
+
41
+ # Public: look up the attribute values for a given path.
42
+ #
43
+ # path - the path for which we want attribute values.
44
+ # attr_names - the attributes to read for the given path.
45
+ #
46
+ # Returns a Hash mapping attribute names to their corresponding values.
47
+ def load_attributes_for_path(path, attr_names)
48
+ raise NotImplementedError
49
+ end
50
+
51
+ # Public: compute the diff between the given old and new commits.
52
+ #
53
+ # old_commit - the string unique identifier of the "before" state of the
54
+ # diff, or nil (representing an empty tree).
55
+ # new_commit - the string unique identifier of the "after" state of the
56
+ # diff, or nil (representing an empty tree).
57
+ #
58
+ # Returns a Source::Diff.
59
+ def diff(old_commit, new_commit)
60
+ raise NotImplementedError
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,95 @@
1
+ require 'rugged'
2
+ require 'linguist/source/diff'
3
+
4
+ module Linguist
5
+ module Source
6
+ # RuggedRepository is an implementation of the Source::Repository abstract
7
+ # class. It represents a Git repository that is accessed using the libgit2
8
+ # wrapper Rugged.
9
+ class RuggedRepository < Linguist::Source::Repository
10
+
11
+ class Diff < Linguist::Source::Diff
12
+ class Delta < Linguist::Source::Diff::Delta
13
+ def initialize(rugged_delta)
14
+ @delta = rugged_delta
15
+ end
16
+
17
+ def status; @delta.status; end
18
+
19
+ def binary?; @delta.binary; end
20
+
21
+ def old_file; @delta.old_file; end
22
+
23
+ def new_file; @delta.new_file; end
24
+ end
25
+
26
+ def initialize(rugged_diff)
27
+ @diff = rugged_diff
28
+ end
29
+
30
+ def each_delta(&block)
31
+ @diff.each_delta.map do |delta|
32
+ Delta.new(delta)
33
+ end.each(&block)
34
+ end
35
+ end
36
+
37
+ GIT_ATTR_OPTS = { :priority => [:index], :skip_system => true }
38
+ GIT_ATTR_FLAGS = Rugged::Repository::Attributes.parse_opts(GIT_ATTR_OPTS)
39
+
40
+ def initialize(rugged)
41
+ @rugged = rugged
42
+ @tree_map = {}
43
+ @attr_source = nil
44
+ end
45
+
46
+ def get_tree_size(commit_id, limit)
47
+ get_tree(commit_id).count_recursive(limit)
48
+ end
49
+
50
+ def set_attribute_source(commit_id)
51
+ tree = get_tree(commit_id)
52
+ return if @attr_source == tree
53
+
54
+ @attr_source = tree
55
+ attr_index = Rugged::Index.new
56
+ attr_index.read_tree(@attr_source)
57
+ @rugged.index = attr_index
58
+ end
59
+
60
+ def load_attributes_for_path(path, attr_names)
61
+ @rugged.fetch_attributes(path, attr_names, GIT_ATTR_FLAGS)
62
+ end
63
+
64
+ def load_blob(blob_id, max_size)
65
+ Rugged::Blob.to_buffer(@rugged, blob_id, max_size)
66
+ end
67
+
68
+ def diff(old_commit, new_commit)
69
+ old_tree = old_commit.nil? ? nil : get_tree(old_commit)
70
+ new_tree = new_commit.nil? ? nil : get_tree(new_commit)
71
+
72
+ Diff.new(Rugged::Tree.diff(@rugged, old_tree, new_tree))
73
+ end
74
+
75
+ # Internal: get the Rugged::Tree associated with a given commit ID. This
76
+ # method should not be used outside of Linguist itself and is subject to
77
+ # change or be removed.
78
+ #
79
+ # commit_id - the object ID of the commit whose tree instance we want.
80
+ #
81
+ # Returns the Rugged::Tree of the specified commit.
82
+ def get_tree(commit_id)
83
+ tree = @tree_map[commit_id]
84
+ return tree if tree
85
+
86
+ @tree_map[commit_id] = Rugged::Commit.lookup(@rugged, commit_id).tree
87
+ @tree_map[commit_id]
88
+ end
89
+
90
+ def method_missing(method_name, *args, &block)
91
+ @rugged.send(method_name, *args, &block)
92
+ end
93
+ end
94
+ end
95
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-linguist
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.1
4
+ version: 9.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-17 00:00:00.000000000 Z
11
+ date: 2025-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi
@@ -272,13 +272,16 @@ files:
272
272
  - grammars/markdown.rescript.codeblock.json
273
273
  - grammars/markdown.talon.codeblock.json
274
274
  - grammars/markdown.textproto.codeblock.json
275
+ - grammars/markdown.vue.codeblock.json
275
276
  - grammars/mdx.move.codeblock.json
277
+ - grammars/mdx.vue.codeblock.json
276
278
  - grammars/objdump.x86asm.json
277
279
  - grammars/source.2da.json
278
280
  - grammars/source.4dm.json
279
281
  - grammars/source.8xp.json
280
282
  - grammars/source.Caddyfile-test.json
281
283
  - grammars/source.Caddyfile.json
284
+ - grammars/source.QB64.json
282
285
  - grammars/source.abap.json
283
286
  - grammars/source.abapcds.json
284
287
  - grammars/source.abl.json
@@ -296,9 +299,9 @@ files:
296
299
  - grammars/source.ampl.json
297
300
  - grammars/source.amxxpawn.json
298
301
  - grammars/source.angelscript.json
302
+ - grammars/source.answersetprogramming.json
299
303
  - grammars/source.antlr.json
300
- - grammars/source.apache-config.json
301
- - grammars/source.apache-config.mod_perl.json
304
+ - grammars/source.apacheconf.json
302
305
  - grammars/source.apex.json
303
306
  - grammars/source.apl.json
304
307
  - grammars/source.applescript.json
@@ -336,16 +339,17 @@ files:
336
339
  - grammars/source.bqn.json
337
340
  - grammars/source.brs.json
338
341
  - grammars/source.bsl.json
342
+ - grammars/source.bst.json
339
343
  - grammars/source.bsv.json
340
344
  - grammars/source.c++.json
341
345
  - grammars/source.c++.qt.json
342
346
  - grammars/source.c.ec.json
343
347
  - grammars/source.c.json
348
+ - grammars/source.c.linker.json
344
349
  - grammars/source.c.nwscript.json
345
350
  - grammars/source.c.platform.json
346
351
  - grammars/source.c2hs.json
347
352
  - grammars/source.cabal.json
348
- - grammars/source.cache.cmake.json
349
353
  - grammars/source.cadence.json
350
354
  - grammars/source.cairo.json
351
355
  - grammars/source.cairo0.json
@@ -369,6 +373,7 @@ files:
369
373
  - grammars/source.clojure.json
370
374
  - grammars/source.cm.json
371
375
  - grammars/source.cmake.json
376
+ - grammars/source.cmakecache.json
372
377
  - grammars/source.cmd.json
373
378
  - grammars/source.cobol.json
374
379
  - grammars/source.cobol_acu_listfile.json
@@ -551,7 +556,9 @@ files:
551
556
  - grammars/source.ioke.json
552
557
  - grammars/source.isabelle.root.json
553
558
  - grammars/source.isabelle.theory.json
559
+ - grammars/source.ispc.json
554
560
  - grammars/source.j.json
561
+ - grammars/source.jai.json
555
562
  - grammars/source.janet.json
556
563
  - grammars/source.jasmin.json
557
564
  - grammars/source.java-properties.json
@@ -570,6 +577,7 @@ files:
570
577
  - grammars/source.js.regexp.replacement.json
571
578
  - grammars/source.jsdoc.json
572
579
  - grammars/source.jsligo.json
580
+ - grammars/source.json.comments.json
573
581
  - grammars/source.json.json
574
582
  - grammars/source.jsoniq.json
575
583
  - grammars/source.jsonnet.json
@@ -577,6 +585,7 @@ files:
577
585
  - grammars/source.julia.json
578
586
  - grammars/source.just.json
579
587
  - grammars/source.kakscript.json
588
+ - grammars/source.kdl.json
580
589
  - grammars/source.kerboscript.json
581
590
  - grammars/source.keyvalues.json
582
591
  - grammars/source.kickstart.json
@@ -623,6 +632,7 @@ files:
623
632
  - grammars/source.maxscript.json
624
633
  - grammars/source.mc.json
625
634
  - grammars/source.mcfunction.json
635
+ - grammars/source.mdx.astro.json
626
636
  - grammars/source.mdx.json
627
637
  - grammars/source.mercury.json
628
638
  - grammars/source.mermaid.c4c-diagram.json
@@ -654,16 +664,20 @@ files:
654
664
  - grammars/source.modula2.json
655
665
  - grammars/source.mojo.json
656
666
  - grammars/source.monkey.json
667
+ - grammars/source.moonbit.json
657
668
  - grammars/source.moonscript.json
658
669
  - grammars/source.move.json
659
670
  - grammars/source.mql5.json
671
+ - grammars/source.msg.json
660
672
  - grammars/source.msl.json
661
673
  - grammars/source.mupad.json
674
+ - grammars/source.mzn.json
662
675
  - grammars/source.nanorc.json
663
676
  - grammars/source.nasal.json
664
677
  - grammars/source.nasl.json
665
678
  - grammars/source.ncl.json
666
679
  - grammars/source.ne.json
680
+ - grammars/source.ned.json
667
681
  - grammars/source.nemerle.json
668
682
  - grammars/source.neon.json
669
683
  - grammars/source.nesc.json
@@ -699,8 +713,10 @@ files:
699
713
  - grammars/source.opal.json
700
714
  - grammars/source.opalsysdefs.json
701
715
  - grammars/source.openbsd-pkg.contents.json
716
+ - grammars/source.openesql.json
702
717
  - grammars/source.opentype.json
703
718
  - grammars/source.opts.json
719
+ - grammars/source.overpassql.json
704
720
  - grammars/source.ox.json
705
721
  - grammars/source.oz.json
706
722
  - grammars/source.p4.json
@@ -812,6 +828,7 @@ files:
812
828
  - grammars/source.scenic.json
813
829
  - grammars/source.scheme.json
814
830
  - grammars/source.scilab.json
831
+ - grammars/source.scm.json
815
832
  - grammars/source.sdbl.json
816
833
  - grammars/source.sed.json
817
834
  - grammars/source.sentinel.json
@@ -824,6 +841,7 @@ files:
824
841
  - grammars/source.shen.json
825
842
  - grammars/source.sieve.json
826
843
  - grammars/source.singularity.json
844
+ - grammars/source.slang.json
827
845
  - grammars/source.slice.json
828
846
  - grammars/source.slint.json
829
847
  - grammars/source.smali.json
@@ -854,6 +872,7 @@ files:
854
872
  - grammars/source.swift.json
855
873
  - grammars/source.sy.json
856
874
  - grammars/source.systemverilog.json
875
+ - grammars/source.tact.json
857
876
  - grammars/source.tags.json
858
877
  - grammars/source.talon.json
859
878
  - grammars/source.tcl.json
@@ -873,6 +892,7 @@ files:
873
892
  - grammars/source.toml.json
874
893
  - grammars/source.ts.json
875
894
  - grammars/source.ts.prismaClientRawSQL.json
895
+ - grammars/source.tsp.json
876
896
  - grammars/source.tsql.json
877
897
  - grammars/source.tsx.json
878
898
  - grammars/source.turing.json
@@ -896,6 +916,7 @@ files:
896
916
  - grammars/source.vhdl.json
897
917
  - grammars/source.vim-snippet.json
898
918
  - grammars/source.viml.json
919
+ - grammars/source.vue.json
899
920
  - grammars/source.vyper.json
900
921
  - grammars/source.wavefront.mtl.json
901
922
  - grammars/source.wavefront.obj.json
@@ -918,6 +939,7 @@ files:
918
939
  - grammars/source.x86asm.json
919
940
  - grammars/source.xc.json
920
941
  - grammars/source.xlfd.json
942
+ - grammars/source.xmake.json
921
943
  - grammars/source.xojo.json
922
944
  - grammars/source.xq.json
923
945
  - grammars/source.xtend.json
@@ -966,7 +988,6 @@ files:
966
988
  - grammars/text.html.elixir.json
967
989
  - grammars/text.html.ember-handlebars.json
968
990
  - grammars/text.html.erb.json
969
- - grammars/text.html.erlang.yaws.json
970
991
  - grammars/text.html.factor.json
971
992
  - grammars/text.html.ftl.json
972
993
  - grammars/text.html.handlebars.json
@@ -994,7 +1015,6 @@ files:
994
1015
  - grammars/text.html.statamic.json
995
1016
  - grammars/text.html.tcl.json
996
1017
  - grammars/text.html.twig.json
997
- - grammars/text.html.vue.json
998
1018
  - grammars/text.idl-idldoc.json
999
1019
  - grammars/text.info.json
1000
1020
  - grammars/text.jade.json
@@ -1003,7 +1023,6 @@ files:
1003
1023
  - grammars/text.log.latex.json
1004
1024
  - grammars/text.marko.json
1005
1025
  - grammars/text.md.json
1006
- - grammars/text.mdx.astro.codeblock.json
1007
1026
  - grammars/text.muse.json
1008
1027
  - grammars/text.openbsd-pkg.desc.json
1009
1028
  - grammars/text.plain.json
@@ -1047,6 +1066,9 @@ files:
1047
1066
  - grammars/text.zone_file.json
1048
1067
  - grammars/textmate.format-string.json
1049
1068
  - grammars/version
1069
+ - grammars/vue.directives.json
1070
+ - grammars/vue.interpolations.json
1071
+ - grammars/vue.sfc.style.variable.injection.json
1050
1072
  - lib/linguist.rb
1051
1073
  - lib/linguist/VERSION
1052
1074
  - lib/linguist/blob.rb
@@ -1069,6 +1091,9 @@ files:
1069
1091
  - lib/linguist/samples.rb
1070
1092
  - lib/linguist/sha256.rb
1071
1093
  - lib/linguist/shebang.rb
1094
+ - lib/linguist/source/diff.rb
1095
+ - lib/linguist/source/repository.rb
1096
+ - lib/linguist/source/rugged.rb
1072
1097
  - lib/linguist/strategy/extension.rb
1073
1098
  - lib/linguist/strategy/filename.rb
1074
1099
  - lib/linguist/strategy/manpage.rb
@@ -1098,7 +1123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1098
1123
  - !ruby/object:Gem::Version
1099
1124
  version: '0'
1100
1125
  requirements: []
1101
- rubygems_version: 3.5.11
1126
+ rubygems_version: 3.5.22
1102
1127
  signing_key:
1103
1128
  specification_version: 4
1104
1129
  summary: GitHub Language detection
@@ -1 +0,0 @@
1
- {"name":"Apache","scopeName":"source.apache-config","patterns":[{"begin":"(^[ \\t]+)?(?=#)","end":"(?!\\G)","patterns":[{"name":"comment.line.number-sign.apache-config","begin":"#","end":"\\n","beginCaptures":{"0":{"name":"punctuation.definition.comment.apache-config"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.apache-config"}}},{"name":"meta.tag.any.html","match":"^[ ]*(\u003c)([a-zA-Z0-9:]+)[^\u003e]*(\u003e(\u003c)/)(\\2)(\u003e)","captures":{"1":{"name":"punctuation.definition.tag.apache-config"},"2":{"name":"entity.name.tag.apache-config"},"3":{"name":"punctuation.definition.tag.apache-config"},"4":{"name":"meta.scope.between-tag-pair.apache-config"},"5":{"name":"entity.name.tag.apache-config"},"6":{"name":"punctuation.definition.tag.apache-config"}}},{"name":"meta.vhost.apache-config","begin":"^[ ]*((\u003c)(VirtualHost)(?:[ ]+([^\u003e]+))?(\u003e))","end":"^[ ]*((\u003c/)(VirtualHost)[^\u003e]*(\u003e))","patterns":[{"include":"$base"}],"beginCaptures":{"1":{"name":"meta.tag.apache-config"},"2":{"name":"punctuation.definition.tag.apache-config"},"3":{"name":"entity.name.tag.apache-config"},"4":{"name":"meta.toc-list.virtual-host.apache-config"},"5":{"name":"punctuation.definition.tag.apache-config"}},"endCaptures":{"1":{"name":"meta.tag.apache-config"},"2":{"name":"punctuation.definition.tag.apache-config"},"3":{"name":"entity.name.tag.apache-config"},"4":{"name":"punctuation.definition.tag.apache-config"}}},{"name":"meta.directory.apache-config","begin":"^[ ]*((\u003c)(Directory(?:Match)?)(?:[ ]+([^\u003e]+))?(\u003e))","end":"^[ ]*((\u003c/)(Directory(?:Match)?)[^\u003e]*(\u003e))","patterns":[{"include":"$base"}],"beginCaptures":{"1":{"name":"meta.tag.apache-config"},"2":{"name":"punctuation.definition.tag.apache-config"},"3":{"name":"entity.name.tag.apache-config"},"4":{"name":"meta.toc-list.directory.apache-config"},"5":{"name":"punctuation.definition.tag.apache-config"}},"endCaptures":{"1":{"name":"meta.tag.apache-config"},"2":{"name":"punctuation.definition.tag.apache-config"},"3":{"name":"entity.name.tag.apache-config"},"4":{"name":"punctuation.definition.tag.apache-config"}}},{"name":"meta.location.apache-config","begin":"^[ ]*((\u003c)(Location(?:Match)?)(?:[ ]+([^\u003e]+))?(\u003e))","end":"^[ ]*((\u003c/)(Location(?:Match)?)[^\u003e]*(\u003e))","patterns":[{"include":"$base"}],"beginCaptures":{"1":{"name":"meta.tag.apache-config"},"2":{"name":"punctuation.definition.tag.apache-config"},"3":{"name":"entity.name.tag.apache-config"},"4":{"name":"meta.toc-list.location.apache-config"},"5":{"name":"punctuation.definition.tag.apache-config"}},"endCaptures":{"1":{"name":"meta.tag.apache-config"},"2":{"name":"punctuation.definition.tag.apache-config"},"3":{"name":"entity.name.tag.apache-config"},"4":{"name":"punctuation.definition.tag.apache-config"}}},{"name":"source.include.apache-config","begin":"(^Include)","end":"(\\n)","patterns":[{"name":"text.include.apache-config","match":"(.*)"}],"beginCaptures":{"1":{"name":"support.constant.include.start.apache-config"}},"endCaptures":{"1":{"name":"support.constant.include.end.apache-config"}}},{"begin":"^[ ]*\\b(RewriteCond)\\b","end":"$","patterns":[{"begin":"[ ]+","end":"$","patterns":[{"include":"#vars"},{"name":"string.regexp.rewrite-test.apache-config","match":"[^ %\\n]+"},{"begin":"[ ]+","end":"$","patterns":[{"name":"string.other.rewrite-condition.apache-config","match":"[^ %\\n]+"},{"match":"[ ]+(\\[[^\\]]+\\])","captures":{"1":{"name":"string.regexp.rewrite-operator.apache-config"}}}]}]}],"captures":{"1":{"name":"support.constant.rewritecond.apache-config"}}},{"begin":"^[ ]*\\b(RewriteRule)\\b","end":"$","patterns":[{"begin":"[ ]+","end":"$","patterns":[{"include":"#vars"},{"name":"string.regexp.rewrite-pattern.apache-config","match":"[^ %]+"},{"begin":"[ ]+","end":"$","patterns":[{"include":"#vars"},{"name":"string.other.rewrite-substitution.apache-config","match":"[^ %\\n]+"},{"match":"[ ]+(\\[[^\\]]+\\])","captures":{"1":{"name":"string.regexp.rewrite-operator.apache-config"}}}]}]}],"captures":{"1":{"name":"support.constant.rewriterule.apache-config"}}},{"name":"support.constant.apache-config","match":"\\b(R(e(sourceConfig|direct(Match|Temp|Permanent)?|qu(ire|estHeader)|ferer(Ignore|Log)|write(Rule|Map|Base|Cond|Options|Engine|Lo(ck|g(Level)?))|admeName|move(Handler|Charset|Type|InputFilter|OutputFilter|Encoding|Language))|Limit(MEM|NPROC|CPU))|Group|XBitHack|M(MapFile|i(nSpare(Servers|Threads)|meMagicFile)|odMimeUsePathInfo|Cache(RemovalAlgorithm|M(inObjectSize|ax(StreamingBuffer|Object(Size|Count)))|Size)|ultiviewsMatch|eta(Suffix|Dir|Files)|ax(RequestsPer(Child|Thread)|MemFree|Spare(Servers|Threads)|Clients|Threads(PerChild)?|KeepAliveRequests))|B(indAddress|S2000Account|rowserMatch(NoCase)?)|S(hmemUIDisUser|c(oreBoardFile|ript(Sock|InterpreterSource|Log(Buffer|Length)?|Alias(Match)?)?)|tart(Servers|Threads)|S(I(StartTag|TimeFormat|UndefinedEcho|E(ndTag|rrorMsg))|L(R(equire(SSL)?|andomSeed)|Mutex|SessionCache(Timeout)?|C(ipherSuite|ertificate(ChainFile|KeyFile|File)|A(Revocation(Path|File)|Certificate(Path|File)))|Options|P(assPhraseDialog|ro(tocol|xy(MachineCertificate(Path|File)|C(ipherSuite|A(Revocation(Path|File)|Certificate(Path|File)))|Protocol|Engine|Verify(Depth)?)))|Engine|Verify(Client|Depth)))|uexecUserGroup|e(ndBufferSize|cureListen|t(Handler|InputFilter|OutputFilter|Env(If(NoCase)?)?)|rver(Root|Signature|Name|T(ype|okens)|Path|Limit|A(dmin|lias)))|atisfy)|H(ostnameLookups|eader(Name)?)|N(o(Cache|Proxy)|umServers|ameVirtualHost|WSSL(TrustedCerts|Upgradeable))|C(h(ildPerUserID|eckSpelling|arset(SourceEnc|Options|Default))|GI(MapExtension|CommandArgs)|o(ntentDigest|okie(Style|Name|Tracking|Domain|Prefix|Expires|Format|Log)|reDumpDirectory)|ustomLog|learModuleList|ache(Root|Gc(MemUsage|Clean|Interval|Daily|Unused)|M(inFileSize|ax(Expire|FileSize))|Size|NegotiatedDocs|TimeMargin|Ignore(NoLastMod|CacheControl)|D(i(sable|rLe(ngth|vels))|efaultExpire)|E(nable|xpiryCheck)|F(ile|orceCompletion)|LastModifiedFactor))|T(hread(sPerChild|StackSize|Limit)|ypesConfig|ime(out|Out)|ransferLog)|I(n(clude|dex(Ignore|O(ptions|rderDefault)))|SAPI(ReadAheadBuffer|CacheFile|FakeAsync|LogNotSupported|AppendLogTo(Errors|Query))|dentityCheck|f(Module|Define)|map(Menu|Base|Default))|O(ptions|rder)|D(irectory(Match|Slash|Index)?|ocumentRoot|e(ny|f(late(MemLevel|BufferSize|CompressionLevel|FilterNote|WindowSize)|ault(Type|Icon|Language)))|av(MinTimeout|DepthInfinity|LockDB)?)|U(se(CanonicalName|r(Dir)?)|nsetEnv)|P(idFile|ort|assEnv|ro(tocol(ReqCheck|Echo)|xy(Re(ceiveBufferSize|quests|mote(Match)?)|Ma(tch|xForwards)|B(lock|adHeader)|Timeout|IOBufferSize|Domain|P(ass(Reverse)?|reserveHost)|ErrorOverride|Via)?))|E(nable(MMAP|Sendfile|ExceptionHook)|BCDIC(Convert(ByType)?|Kludge)|rror(Header|Document|Log)|x(t(endedStatus|Filter(Options|Define))|pires(ByType|Default|Active)|ample))|Virtual(ScriptAlias(IP)?|Host|DocumentRoot(IP)?)|KeepAlive(Timeout)?|F(ile(s(Match)?|ETag)|or(ce(Type|LanguagePriority)|ensicLog)|ancyIndexing)|Win32DisableAcceptEx|L(i(sten(Back(log|Log))?|mit(Request(Body|Field(s(ize)?|Size)|Line)|XMLRequestBody|InternalRecursion|Except)?)|o(c(kFile|ation(Match)?)|ad(Module|File)|g(Format|Level))|DAP(SharedCache(Size|File)|Cache(TTL|Entries)|TrustedCA(Type)?|OpCache(TTL|Entries))|anguagePriority)|A(ssignUserID|nonymous(_(MustGiveEmail|NoUserID|VerifyEmail|LogEmail|Authoritative))?|c(ce(ss(Config|FileName)|pt(Mutex|PathInfo|Filter))|tion)|dd(Module(Info)?|Handler|Charset|Type|I(nputFilter|con(By(Type|Encoding))?)|OutputFilter(ByType)?|De(scription|faultCharset)|Encoding|Language|Alt(By(Type|Encoding))?)|uth(GroupFile|Name|Type|D(B(GroupFile|M(GroupFile|Type|UserFile|Authoritative)|UserFile|Authoritative)|igest(GroupFile|ShmemSize|N(cCheck|once(Format|Lifetime))|Domain|Qop|File|Algorithm))|UserFile|LDAP(RemoteUserIsDN|GroupAttribute(IsDN)?|Bind(DN|Password)|C(harsetConfig|ompareDNOnServer)|DereferenceAliases|Url|Enabled|FrontPageHack|Authoritative)|Authoritative)|l(ias(Match)?|low(CONNECT|Override|EncodedSlashes)?)|gentLog)|MIMEMagicFile|WSGI(.[^ ]+))\\b"},{"name":"support.class.apache-config","match":"\\b(access_module|actions_module|action_module|alias_module|anon_auth_module|asis_module|authn_alias_module|authn_anon_module|authn_dbd_module|authn_dbm_module|authn_default_module|authn_file_module|authnz_ldap_module|authz_dbm_module|authz_default_module|authz_groupfile_module|authz_host_module|authz_owner_module|authz_user_module|auth_basic_module|auth_digest_module|auth_module|autoindex_module|bonjour_module|cache_module|cern_meta_module|cgi_module|config_log_module|dav_fs_module|dav_module|dbd_module|dbm_auth_module|deflate_module|digest_module|dir_module|disk_cache_module|dumpio_module|env_module|expires_module|ext_filter_module|fastcgi_module|filter_module|foo_module|headers_module|hfs_apple_module|ident_module|imagemap_module|imap_module|includes_module|include_module|info_module|jk_module|ldap_module|logio_module|log_config_module|log_forensic_module|mem_cache_module|mime_magic_module|mime_module|negotiation_module|perl_module|php4_module|php5_module|proxy_ajp_module|proxy_balancer_module|proxy_connect_module|proxy_ftp_module|proxy_http_module|proxy_module|rendezvous_apple_module|rendezvous_module|rewrite_module|setenvif_module|speling_module|ssl_module|status_module|suexec_module|substitute_module|unique_id_module|userdir_module|usertrack_module|version_module|vhost_alias_module|wsgi_module)\\b"},{"name":"string.quoted.double.apache-config","begin":"\"","end":"\"(?!\")","patterns":[{"name":"constant.character.escape.apostrophe.apache","match":"\"\""}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apache-config"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.apache-config"}}},{"name":"meta.tag.apache-config","begin":"(\u003c/?)([a-zA-Z]+)","end":"(/?\u003e)","captures":{"1":{"name":"punctuation.definition.tag.apache-config"},"2":{"name":"entity.name.tag.apache-config"}}}],"repository":{"vars":{"patterns":[{"name":"support.variable.apache-config","match":"(%\\{)(?:API_VERSION|AUTH_TYPE|CONN_REMOTE_ADDR|CONTEXT_(?:PREFIX|DOCUMENT_ROOT)|DOCUMENT_ROOT|HTTP(S|_(?:ACCEPT|COOKIE|FORWARDED|HOST|PROXY_CONNECTION|REFERER|USER_AGENT))|IPV6|IS_SUBREQ|REMOTE_(?:ADDR|HOST|IDENT|PORT|USER)|REQUEST_(?:FILENAME|METHOD|SCHEME|URI)|SCRIPT_(?:FILENAME|GROUP|USER)|PATH_INFO|QUERY_STRING|SERVER_(?:ADDR|ADMIN|NAME|PORT|PROTOCOL|SOFTWARE)|THE_REQUEST|TIME_(?:YEAR|MON|DAY|HOUR|MIN|SEC|WDAY)|TIME|(?:ENV|HTTP|LA-F|LA-U|SSL):[^\\}]+)(\\})","captures":{"1":{"name":"punctuation.definition.variable.apache-config"},"3":{"name":"punctuation.definition.variable.apache-config"}}},{"name":"invalid.illegal.bad-var.apache-config","match":"%\\{[^\\}]+\\}"}]}}}
@@ -1 +0,0 @@
1
- {"name":"mod_perl","scopeName":"source.apache-config.mod_perl","patterns":[{"name":"comment.block.documentation.apache-config.mod_perl","begin":"^=","end":"^=cut","captures":{"0":{"name":"punctuation.definition.comment.mod_perl"}}},{"name":"support.constant.apache-config.mod_perl","match":"\\b(PerlAddVar|PerlConfigRequire|PerlLoadModule|PerlModule|PerlOptions|PerlPassEnv|PerlPostConfigRequire|PerlRequire|PerlSetEnv|PerlSetVar|PerlSwitches|SetHandler|PerlOpenLogsHandler|PerlPostConfigHandler|PerlChildInitHandler|PerlChildExitHandler|PerlPreConnectionHandler|PerlProcessConnectionHandler|PerlInputFilterHandler|PerlOutputFilterHandler|PerlSetInputFilter|PerlSetOutputFilter|PerlPostReadRequestHandler|PerlTransHandler|PerlMapToStorageHandler|PerlInitHandler|PerlHeaderParserHandler|PerlAccessHandler|PerlAuthenHandler|PerlAuthzHandler|PerlTypeHandler|PerlFixupHandler|PerlResponseHandler|PerlLogHandler|PerlCleanupHandler|PerlInterpStart|PerlInterpMax|PerlInterpMinSpare|PerlInterpMaxSpare|PerlInterpMaxRequests|PerlInterpScope|PerlTrace)\\b"},{"name":"support.constant.apache-config.mod_perl_1.mod_perl","match":"\\b(PerlHandler|PerlScript|PerlSendHeader|PerlSetupEnv|PerlTaintCheck|PerlWarn|PerlFreshRestart)\\b"},{"name":"meta.perl-section.apache-config.mod_perl","begin":"^\\s*((\u003c)(Perl)(\u003e))","end":"^\\s*((\u003c/)(Perl)(\u003e))","patterns":[{"include":"source.perl"}],"beginCaptures":{"1":{"name":"meta.tag.apache-config"},"2":{"name":"punctuation.definition.tag.apache-config"},"3":{"name":"entity.name.tag.apache-config"},"4":{"name":"punctuation.definition.tag.apache-config"}},"endCaptures":{"1":{"name":"meta.tag.apache-config"},"2":{"name":"punctuation.definition.tag.apache-config"},"3":{"name":"entity.name.tag.apache-config"},"4":{"name":"punctuation.definition.tag.apache-config"}}},{"include":"source.apache-config"}]}
@@ -1 +0,0 @@
1
- {"name":"CMake Cache","scopeName":"source.cache.cmake","patterns":[{"include":"#comments"},{"include":"#assignation"}],"repository":{"assignation":{"name":"variable.other.cmake","match":"([a-zA-Z0-9_\\-\\d]+)(:)(STRING|FILE|FILEPATH|BOOL|INTERNAL|STATIC)(\\=)(.*)","captures":{"1":{"name":"variable.language.cache.cmake"},"2":{"name":"keyword.other.argument-separator.cmake"},"3":{"name":"constant.language.cache.cmake"},"4":{"name":"keyword.operator.cmake"},"5":{"name":"string.unquoted.cmake"}}},"comments":{"patterns":[{"begin":"(^[ \\t]+)?(?=//|\\#)","end":"(?!\\G)","patterns":[{"name":"comment.line.double-slash.cmake","begin":"//","end":"\\n","beginCaptures":{"0":{"name":"punctuation.definition.comment.cmake"}}},{"name":"comment.line.sign-line.cmake","begin":"\\#","end":"\\n","beginCaptures":{"0":{"name":"punctuation.definition.comment.cmake"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.cmake"}}}]}}}
@@ -1 +0,0 @@
1
- {"name":"HTML (Erlang)","scopeName":"text.html.erlang.yaws","patterns":[{"contentName":"meta.embedded.block.erlang","begin":"(^\\s*)?(?=\u003cerl\u003e)","end":"(?!\\G)(\\s*\\n)?","patterns":[{"contentName":"source.erlang","begin":"(\u003c)(erl)(\u003e)","end":"((\u003c/))(erl)(\u003e)","patterns":[{"include":"source.erlang"}],"beginCaptures":{"0":{"name":"meta.tag.template.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"}},"endCaptures":{"0":{"name":"meta.tag.template.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"source.erlang"},"3":{"name":"entity.name.tag.html"},"4":{"name":"punctuation.definition.tag.end.html"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.embedded.leading.html"}},"endCaptures":{"1":{"name":"punctuation.whitespace.embedded.trailing.html"}}},{"include":"text.html.basic"}]}
@@ -1 +0,0 @@
1
- {"name":"Vue Component","scopeName":"text.html.vue","patterns":[{"include":"#vue-interpolations"},{"name":"meta.tag.any.html","begin":"(\u003c)([a-zA-Z0-9:-]++)(?=[^\u003e]*\u003e\u003c/\\2\u003e)","end":"(\u003e)(\u003c)(/)(\\2)(\u003e)","patterns":[{"include":"#tag-stuff"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"},"2":{"name":"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"},"3":{"name":"punctuation.definition.tag.begin.html"},"4":{"name":"entity.name.tag.html"},"5":{"name":"punctuation.definition.tag.end.html"}}},{"name":"meta.tag.preprocessor.xml.html","begin":"(\u003c\\?)(xml)","end":"(\\?\u003e)","patterns":[{"include":"#tag-generic-attribute"},{"include":"#string-double-quoted"},{"include":"#string-single-quoted"}],"captures":{"1":{"name":"punctuation.definition.tag.html"},"2":{"name":"entity.name.tag.xml.html"}}},{"name":"comment.block.html","begin":"\u003c!--","end":"--\\s*\u003e","patterns":[{"name":"invalid.illegal.bad-comments-or-CDATA.html","match":"--"}],"captures":{"0":{"name":"punctuation.definition.comment.html"}}},{"name":"meta.tag.sgml.html","begin":"\u003c!","end":"\u003e","patterns":[{"name":"meta.tag.sgml.doctype.html","begin":"(?i:DOCTYPE)","end":"(?=\u003e)","patterns":[{"name":"string.quoted.double.doctype.identifiers-and-DTDs.html","match":"\"[^\"\u003e]*\""}],"captures":{"1":{"name":"entity.name.tag.doctype.html"}}},{"name":"constant.other.inline-data.html","begin":"\\[CDATA\\[","end":"]](?=\u003e)"},{"name":"invalid.illegal.bad-comments-or-CDATA.html","match":"(\\s*)(?!--|\u003e)\\S(\\s*)"}],"captures":{"0":{"name":"punctuation.definition.tag.html"}}},{"name":"text.slm.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:template))\\b(?=[^\u003e]*lang=(['\"])slm\\1?)","end":"(\u003c/)((?i:template))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:template))","patterns":[{"include":"text.slim"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"text.jade.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:template))\\b(?=[^\u003e]*lang=(['\"])jade\\1?)","end":"(\u003c/)((?i:template))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:template))","patterns":[{"include":"text.jade"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"text.pug.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:template))\\b(?=[^\u003e]*lang=(['\"])pug\\1?)","end":"(\u003c/)((?i:template))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:template))","patterns":[{"include":"text.jade"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"source.stylus.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:style))\\b(?=[^\u003e]*lang=(['\"])stylus\\1?)","end":"(\u003c/)((?i:style))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:style))","patterns":[{"include":"source.stylus"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"source.postcss.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:style))\\b(?=[^\u003e]*lang=(['\"])postcss\\1?)","end":"(\u003c/)((?i:style))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:style))","patterns":[{"include":"source.postcss"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"source.sass.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:style))\\b(?=[^\u003e]*lang=(['\"])sass\\1?)","end":"(\u003c/)((?i:style))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:style))","patterns":[{"include":"source.sass"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"source.scss.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:style))\\b(?=[^\u003e]*lang=(['\"])scss\\1?)","end":"(\u003c/)((?i:style))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:style))","patterns":[{"include":"source.css.scss"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"source.less.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:style))\\b(?=[^\u003e]*lang=(['\"])less\\1?)","end":"(\u003c/)((?i:style))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:style))","patterns":[{"include":"source.css.less"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"source.css.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:style))\\b(?![^\u003e]*/\u003e)","end":"(\u003c/)((?i:style))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(\u003e)","end":"(?=\u003c/(?i:style))","patterns":[{"include":"source.css"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.style.html"},"3":{"name":"punctuation.definition.tag.html"}}},{"name":"source.ts.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:script))\\b(?=[^\u003e]*lang=(['\"])ts\\1?)","end":"(?\u003c=\u003c/(script|SCRIPT))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(?\u003c!\u003c/(?:script|SCRIPT))(\u003e)","end":"(\u003c/)((?i:script))","patterns":[{"include":"source.ts"}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.script.html"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.script.html"}},"endCaptures":{"2":{"name":"punctuation.definition.tag.html"}}},{"name":"source.coffee.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:script))\\b(?=[^\u003e]*lang=(['\"])coffee\\1?)","end":"(?\u003c=\u003c/(script|SCRIPT))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(?\u003c!\u003c/(?:script|SCRIPT))(\u003e)","end":"(\u003c/)((?i:script))","patterns":[{"include":"source.coffee"}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.script.html"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.script.html"}},"endCaptures":{"2":{"name":"punctuation.definition.tag.html"}}},{"name":"source.livescript.embedded.html","begin":"(?:^\\s+)?(\u003c)((?i:script))\\b(?=[^\u003e]*lang=(['\"])livescript\\1?)","end":"(?\u003c=\u003c/(script|SCRIPT))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(?\u003c!\u003c/(?:script|SCRIPT))(\u003e)","end":"(\u003c/)((?i:script))","patterns":[{"include":"source.livescript"}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.script.html"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.script.html"}},"endCaptures":{"2":{"name":"punctuation.definition.tag.html"}}},{"name":"source.js.embedded.html","begin":"(\u003c)((?i:script))\\b(?![^\u003e]*/\u003e)(?![^\u003e]*(?i:type.?=.?text/((?!javascript|babel|ecmascript).*)))","end":"(?\u003c=\u003c/(script|SCRIPT))(\u003e)(?:\\s*\\n)?","patterns":[{"include":"#tag-stuff"},{"begin":"(?\u003c!\u003c/(?:script|SCRIPT))(\u003e)","end":"(\u003c/)((?i:script))","patterns":[{"name":"comment.line.double-slash.js","match":"(//).*?((?=\u003c/script)|$\\n?)","captures":{"1":{"name":"punctuation.definition.comment.js"}}},{"name":"comment.block.js","begin":"/\\*","end":"\\*/|(?=\u003c/script)","captures":{"0":{"name":"punctuation.definition.comment.js"}}},{"include":"source.js"}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.script.html"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.script.html"}},"endCaptures":{"2":{"name":"punctuation.definition.tag.html"}}},{"name":"meta.tag.structure.any.html","begin":"(\u003c/?)((?i:body|head|html)\\b)","end":"(\u003e)","patterns":[{"include":"#tag-stuff"}],"captures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.structure.any.html"}},"endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}},{"name":"meta.tag.block.any.html","begin":"(\u003c/?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\b)","end":"(\u003e)","patterns":[{"include":"#tag-stuff"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.block.any.html"}},"endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}},{"name":"meta.tag.inline.any.html","begin":"(\u003c/?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\b)","end":"((?: ?/)?\u003e)","patterns":[{"include":"#tag-stuff"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.inline.any.html"}},"endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}},{"name":"meta.tag.other.html","begin":"(\u003c/?)([a-zA-Z0-9:-]+)","end":"(\u003e)","patterns":[{"include":"#tag-stuff"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.other.html"}},"endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}}},{"include":"#entities"},{"name":"invalid.illegal.incomplete.html","match":"\u003c\u003e"},{"name":"invalid.illegal.bad-angle-bracket.html","match":"\u003c"}],"repository":{"entities":{"patterns":[{"name":"constant.character.entity.html","match":"(\u0026)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)","captures":{"1":{"name":"punctuation.definition.entity.html"},"3":{"name":"punctuation.definition.entity.html"}}},{"name":"invalid.illegal.bad-ampersand.html","match":"\u0026"}]},"string-double-quoted":{"name":"string.quoted.double.html","begin":"\"","end":"\"","patterns":[{"include":"#vue-interpolations"},{"include":"#entities"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}}},"string-single-quoted":{"name":"string.quoted.single.html","begin":"'","end":"'","patterns":[{"include":"#vue-interpolations"},{"include":"#entities"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}}},"tag-generic-attribute":{"name":"entity.other.attribute-name.html","match":"\\b([a-zA-Z\\-:]+)"},"tag-id-attribute":{"name":"meta.attribute-with-value.id.html","begin":"\\b(id)\\b\\s*(=)","end":"(?\u003c='|\")","patterns":[{"name":"string.quoted.double.html","contentName":"meta.toc-list.id.html","begin":"\"","end":"\"","patterns":[{"include":"#vue-interpolations"},{"include":"#entities"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}}},{"name":"string.quoted.single.html","contentName":"meta.toc-list.id.html","begin":"'","end":"'","patterns":[{"include":"#vue-interpolations"},{"include":"#entities"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}}}],"captures":{"1":{"name":"entity.other.attribute-name.id.html"},"2":{"name":"punctuation.separator.key-value.html"}}},"tag-stuff":{"patterns":[{"include":"#vue-directives"},{"include":"#tag-id-attribute"},{"include":"#tag-generic-attribute"},{"include":"#string-double-quoted"},{"include":"#string-single-quoted"}]},"vue-directives":{"name":"meta.directive.vue","begin":"(?:\\b(v-)|(:|@))([a-zA-Z\\-]+)(?:\\:([a-zA-Z\\-]+))?(?:\\.([a-zA-Z\\-]+))*\\s*(=)","end":"(?\u003c='|\")","patterns":[{"name":"source.directive.vue","begin":"\"","end":"\"","patterns":[{"include":"source.js"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}}},{"name":"source.directive.vue","begin":"'","end":"'","patterns":[{"include":"source.js"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}}}],"captures":{"1":{"name":"entity.other.attribute-name.html"},"2":{"name":"punctuation.separator.key-value.html"},"3":{"name":"entity.other.attribute-name.html"},"4":{"name":"entity.other.attribute-name.html"},"5":{"name":"entity.other.attribute-name.html"},"6":{"name":"punctuation.separator.key-value.html"}}},"vue-interpolations":{"patterns":[{"name":"expression.embbeded.vue","begin":"\\{\\{\\{?","end":"\\}\\}\\}?","patterns":[{"include":"source.js"}],"beginCaptures":{"0":{"name":"punctuation.definition.generic.begin.html"}},"endCaptures":{"0":{"name":"punctuation.definition.generic.end.html"}}}]}}}
@@ -1 +0,0 @@
1
- {"scopeName":"text.mdx.astro.codeblock","patterns":[{"name":"markup.code.astro.mdx","contentName":"meta.embedded.astro","begin":"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?astro))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)","end":"(\\1)(?:[\\t ]*$)","patterns":[{"include":"#astro-code-block"}],"beginCaptures":{"1":{"name":"string.other.begin.code.fenced.mdx"},"2":{"name":"entity.name.function.mdx"}},"endCaptures":{"1":{"name":"string.other.end.code.fenced.mdx"}}},{"name":"markup.code.astro.mdx","contentName":"meta.embedded.astro","begin":"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?astro))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)","end":"(\\1)(?:[\\t ]*$)","patterns":[{"include":"#astro-code-block"}],"beginCaptures":{"1":{"name":"string.other.begin.code.fenced.mdx"},"2":{"name":"entity.name.function.mdx"}},"endCaptures":{"1":{"name":"string.other.end.code.fenced.mdx"}}}],"repository":{"astro-code-block":{"patterns":[{"contentName":"meta.embedded.block.astro.frontmatter","begin":"^\\s*---\\s*$","end":"^\\s*---\\s*$","patterns":[{"include":"source.tsx"}],"beginCaptures":{"0":{"name":"punctuation.definition.tag.xi.begin.t"}},"endCaptures":{"0":{"name":"punctuation.definition.tag.xi.end.t"}}},{"include":"source.astro"}]}}}