github-linguist 9.5.0 → 9.7.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 (157) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/etc.json +1 -1
  3. data/grammars/gno.mod.json +1 -0
  4. data/grammars/markdown.mojo.codeblock.json +1 -0
  5. data/grammars/markdown.move.codeblock.json +1 -1
  6. data/grammars/source.4dm.json +1 -1
  7. data/grammars/source.abl.json +1 -1
  8. data/grammars/source.aleo.json +1 -0
  9. data/grammars/source.apex.json +1 -1
  10. data/grammars/source.astro.json +1 -1
  11. data/grammars/source.baml.json +1 -0
  12. data/grammars/source.bb.json +1 -1
  13. data/grammars/source.bird2.json +1 -0
  14. data/grammars/source.blueprint.json +1 -0
  15. data/grammars/source.bnd.json +1 -1
  16. data/grammars/source.brs.embedded.xml.json +1 -0
  17. data/grammars/source.bsl.json +1 -1
  18. data/grammars/source.c++.json +1 -1
  19. data/grammars/source.c.json +1 -1
  20. data/grammars/source.c3.json +1 -1
  21. data/grammars/source.carbon.json +1 -0
  22. data/grammars/source.cel.json +1 -0
  23. data/grammars/source.cl.json +1 -1
  24. data/grammars/source.clar.json +1 -1
  25. data/grammars/source.cmake.json +1 -1
  26. data/grammars/source.cmd.json +1 -1
  27. data/grammars/source.comment-string.wesl.json +1 -1
  28. data/grammars/source.comment-string.wgsl.json +1 -1
  29. data/grammars/source.cs.json +1 -1
  30. data/grammars/source.csswg.json +1 -1
  31. data/grammars/source.csv.json +1 -1
  32. data/grammars/source.curlrc.json +1 -1
  33. data/grammars/source.dart.json +1 -1
  34. data/grammars/source.daslang.json +1 -1
  35. data/grammars/source.data-weave.json +1 -1
  36. data/grammars/source.dds.dspf.json +1 -1
  37. data/grammars/source.dds.icff.json +1 -1
  38. data/grammars/source.dds.lf.json +1 -1
  39. data/grammars/source.dds.pf.json +1 -1
  40. data/grammars/source.dds.prtf.json +1 -1
  41. data/grammars/source.deq.json +1 -0
  42. data/grammars/source.emacs.lisp.json +1 -1
  43. data/grammars/source.fift.json +1 -0
  44. data/grammars/source.flix.json +1 -1
  45. data/grammars/source.fpp.json +1 -0
  46. data/grammars/source.func.json +1 -0
  47. data/grammars/source.gdscript.json +1 -1
  48. data/grammars/source.gedcom.json +1 -1
  49. data/grammars/source.gimprc.json +1 -0
  50. data/grammars/source.gimpres.json +1 -0
  51. data/grammars/source.gitconfig.json +1 -1
  52. data/grammars/source.gno.json +1 -0
  53. data/grammars/source.graphql.json +1 -1
  54. data/grammars/source.gtkrc.json +1 -0
  55. data/grammars/source.hack.json +1 -1
  56. data/grammars/source.hosts.json +1 -1
  57. data/grammars/source.hx.json +1 -1
  58. data/grammars/source.hxml.json +1 -1
  59. data/grammars/source.il.json +1 -0
  60. data/grammars/source.interp.json +1 -0
  61. data/grammars/source.jac.json +1 -1
  62. data/grammars/source.jactoml.json +1 -0
  63. data/grammars/source.jai.json +1 -1
  64. data/grammars/source.jass.json +1 -0
  65. data/grammars/source.julia.json +1 -1
  66. data/grammars/source.just.json +1 -1
  67. data/grammars/source.kcl.json +1 -1
  68. data/grammars/source.koka.json +1 -1
  69. data/grammars/source.lean4.markdown.json +1 -1
  70. data/grammars/source.leo.json +1 -1
  71. data/grammars/source.lobster.json +1 -0
  72. data/grammars/source.logos.json +1 -1
  73. data/grammars/source.luau.json +1 -1
  74. data/grammars/source.m2.json +1 -1
  75. data/grammars/source.m3u.json +1 -1
  76. data/grammars/source.matlab.json +1 -1
  77. data/grammars/source.mdx.astro.json +1 -1
  78. data/grammars/source.mi.json +1 -1
  79. data/grammars/source.mo.json +1 -1
  80. data/grammars/source.mojo.json +1 -1
  81. data/grammars/source.moonbit.config.json +1 -0
  82. data/grammars/source.moonbit.json +1 -1
  83. data/grammars/source.move.json +1 -1
  84. data/grammars/source.ms.json +1 -0
  85. data/grammars/source.nim.json +1 -1
  86. data/grammars/source.openqasm.json +1 -1
  87. data/grammars/source.opy.json +1 -0
  88. data/grammars/source.paperspecs.json +1 -0
  89. data/grammars/source.pic.json +1 -1
  90. data/grammars/source.pkgconf.json +1 -0
  91. data/grammars/source.pl.json +1 -0
  92. data/grammars/source.pnlgrp.json +1 -1
  93. data/grammars/source.powerquery.json +1 -0
  94. data/grammars/source.powershell.json +1 -1
  95. data/grammars/source.prisma.json +1 -1
  96. data/grammars/source.qsharp.json +1 -1
  97. data/grammars/source.quint.json +1 -0
  98. data/grammars/source.rarlist.json +1 -0
  99. data/grammars/source.rascript.json +1 -1
  100. data/grammars/source.record-jar.json +1 -1
  101. data/grammars/source.redscript.json +1 -0
  102. data/grammars/source.rego.json +1 -1
  103. data/grammars/source.rhai.json +1 -0
  104. data/grammars/source.rpg.json +1 -1
  105. data/grammars/source.rpgle.json +1 -1
  106. data/grammars/source.rust.json +1 -1
  107. data/grammars/source.scala.json +1 -1
  108. data/grammars/source.slang.json +1 -1
  109. data/grammars/source.slint.json +1 -1
  110. data/grammars/source.smithy.json +1 -1
  111. data/grammars/source.soql.json +1 -1
  112. data/grammars/source.spicedb-yaml.json +1 -0
  113. data/grammars/source.spicedb.json +1 -0
  114. data/grammars/source.stan.json +1 -1
  115. data/grammars/source.stim.json +1 -0
  116. data/grammars/source.surrealql.json +1 -1
  117. data/grammars/source.swift.json +1 -1
  118. data/grammars/source.tasm.json +1 -0
  119. data/grammars/source.tlb.json +1 -0
  120. data/grammars/source.tolk.json +1 -0
  121. data/grammars/source.ucode-template.json +1 -0
  122. data/grammars/source.ucode.json +1 -0
  123. data/grammars/source.uri-list.json +1 -0
  124. data/grammars/source.v.json +1 -1
  125. data/grammars/source.vento.json +1 -1
  126. data/grammars/source.verse.json +1 -0
  127. data/grammars/source.vespaSchema.json +1 -0
  128. data/grammars/source.vhs.json +1 -0
  129. data/grammars/source.wgsl.json +1 -1
  130. data/grammars/source.yaml.salt.json +1 -1
  131. data/grammars/spicedb-yaml.injection.json +1 -0
  132. data/grammars/text.bbcode.json +1 -0
  133. data/grammars/text.cachedir.json +1 -0
  134. data/grammars/text.cookie-jar.json +1 -0
  135. data/grammars/text.html.handlebars.json +1 -1
  136. data/grammars/text.html.vue.json +1 -1
  137. data/grammars/text.mac-tts.json +1 -0
  138. data/grammars/text.recfile.json +1 -0
  139. data/grammars/text.roff.json +1 -1
  140. data/grammars/version +1 -1
  141. data/lib/linguist/VERSION +1 -1
  142. data/lib/linguist/blob_helper.rb +19 -0
  143. data/lib/linguist/classifier.rb +2 -1
  144. data/lib/linguist/generated.rb +40 -0
  145. data/lib/linguist/generic.yml +3 -0
  146. data/lib/linguist/heuristics.yml +97 -5
  147. data/lib/linguist/language.rb +13 -9
  148. data/lib/linguist/languages.yml +368 -37
  149. data/lib/linguist/languages_data.rb +7663 -0
  150. data/lib/linguist/lazy_blob.rb +25 -2
  151. data/lib/linguist/samples.rb +4 -10
  152. data/lib/linguist/samples_data.rb +196100 -0
  153. data/lib/linguist/vendor.yml +3 -0
  154. metadata +54 -18
  155. data/grammars/markdown.bicep.codeblock.json +0 -1
  156. data/lib/linguist/languages.json +0 -1
  157. data/lib/linguist/samples.json +0 -1
@@ -9,7 +9,8 @@ module Linguist
9
9
  'linguist-language',
10
10
  'linguist-vendored',
11
11
  'linguist-generated',
12
- 'linguist-detectable']
12
+ 'linguist-detectable',
13
+ 'filter']
13
14
 
14
15
  # DEPRECATED: use Linguist::Source::RuggedRepository::GIT_ATTR_OPTS instead
15
16
  GIT_ATTR_OPTS = Linguist::Source::RuggedRepository::GIT_ATTR_OPTS
@@ -73,7 +74,25 @@ module Linguist
73
74
  return @language if defined?(@language)
74
75
 
75
76
  @language = if lang = git_attributes['linguist-language']
76
- Language.find_by_alias(lang)
77
+ detected_language = Language.find_by_alias(lang)
78
+
79
+ # If strategies are being tracked, get the original strategy that would have been used
80
+ if detected_language && Linguist.instrumenter
81
+ # Get the original strategy by calling super (which calls Linguist.detect)
82
+ original_language = super
83
+ original_strategy_info = Linguist.instrumenter.detected_info[self.name]
84
+ original_strategy = original_strategy_info ? original_strategy_info[:strategy] : "Unknown"
85
+
86
+ if original_language == detected_language
87
+ strategy_name = "#{original_strategy} (confirmed by .gitattributes)"
88
+ else
89
+ strategy_name = "#{original_strategy} (overridden by .gitattributes)"
90
+ end
91
+
92
+ strategy = Struct.new(:name).new(strategy_name)
93
+ Linguist.instrument("linguist.detected", blob: self, strategy: strategy, language: detected_language)
94
+ end
95
+ detected_language
77
96
  else
78
97
  super
79
98
  end
@@ -87,6 +106,10 @@ module Linguist
87
106
  end
88
107
  end
89
108
 
109
+ def lfs_tracked?
110
+ git_attributes['filter'] == 'lfs'
111
+ end
112
+
90
113
  def data
91
114
  load_blob!
92
115
  @data
@@ -15,7 +15,7 @@ module Linguist
15
15
  ROOT = File.expand_path("../../../samples", __FILE__)
16
16
 
17
17
  # Path for serialized samples db
18
- PATH = File.expand_path('../samples.json', __FILE__)
18
+ PATH = File.expand_path('../samples_data.rb', __FILE__)
19
19
 
20
20
  # Hash of serialized samples object, cached in memory
21
21
  def self.cache
@@ -24,15 +24,9 @@ module Linguist
24
24
 
25
25
  # Hash of serialized samples object, uncached
26
26
  def self.load_samples
27
- serializer = defined?(Yajl) ? Yajl : JSON
28
- data = serializer.load(File.read(PATH, encoding: 'utf-8'))
29
- # JSON serialization does not allow integer keys, we fix them here
30
- for lang in data['centroids'].keys
31
- fixed = data['centroids'][lang].to_a.map { |k,v| [k.to_i, v] }
32
- data['centroids'][lang] = Hash[fixed]
33
- end
34
-
35
- data
27
+ mod = Module.new
28
+ load(PATH, mod)
29
+ mod::DATA
36
30
  end
37
31
 
38
32
  # Public: Iterate over each sample.