github-linguist 7.6.0 → 7.10.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 (147) hide show
  1. checksums.yaml +5 -5
  2. data/bin/github-linguist +17 -4
  3. data/grammars/annotation.liquidhaskell.haskell.json +58 -11
  4. data/grammars/etc.json +472 -4
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hidden.regexp.injection-shell.json +28 -0
  7. data/grammars/hint.haskell.json +58 -11
  8. data/grammars/hint.message.haskell.json +58 -11
  9. data/grammars/hint.type.haskell.json +58 -11
  10. data/grammars/injections.etc.json +601 -1
  11. data/grammars/markdown.plantuml.codeblock.json +26 -0
  12. data/grammars/source.4dm.json +1156 -0
  13. data/grammars/source.abap.json +7 -7
  14. data/grammars/source.abl.json +685 -83
  15. data/grammars/source.abnf.json +23 -1
  16. data/grammars/source.agda.json +33 -203
  17. data/grammars/source.ahk.json +9 -5
  18. data/grammars/source.angelscript.json +1 -1
  19. data/grammars/source.ballerina.json +55 -19
  20. data/grammars/source.c++.json +4 -4
  21. data/grammars/source.c.platform.json +584 -33
  22. data/grammars/source.chapel.json +7 -4
  23. data/grammars/source.csound.json +1 -1
  24. data/grammars/source.css.json +3 -3
  25. data/grammars/source.css.scss.json +164 -15
  26. data/grammars/source.curlrc.json +869 -65
  27. data/grammars/source.d.json +2 -2
  28. data/grammars/source.dart.json +58 -32
  29. data/grammars/source.dircolors.json +137 -0
  30. data/grammars/source.direct-x.json +135 -0
  31. data/grammars/source.ebnf.json +67 -39
  32. data/grammars/source.editorconfig.json +23 -5
  33. data/grammars/source.elixir.json +51 -0
  34. data/grammars/source.elm.json +1 -1
  35. data/grammars/source.emacs.lisp.json +10 -0
  36. data/grammars/source.faust.json +119 -0
  37. data/grammars/source.futhark.json +146 -0
  38. data/grammars/source.gcode.json +166 -8
  39. data/grammars/source.gedcom.json +196 -0
  40. data/grammars/source.generic-db.json +41 -0
  41. data/grammars/source.gfm.blade.json +15 -0
  42. data/grammars/source.gfm.json +1697 -1439
  43. data/grammars/source.gitconfig.json +1 -1
  44. data/grammars/source.hack.json +200 -98
  45. data/grammars/source.haskell.json +58 -11
  46. data/grammars/source.hlsl.json +9 -5
  47. data/grammars/source.hosts.json +40 -0
  48. data/grammars/source.hsig.json +58 -11
  49. data/grammars/source.httpspec.json +1 -1
  50. data/grammars/source.hx.json +9 -5
  51. data/grammars/source.hxml.json +2 -2
  52. data/grammars/source.idris.json +1 -1
  53. data/grammars/source.igor.json +46 -2
  54. data/grammars/source.ini.npmrc.json +311 -0
  55. data/grammars/source.inno.json +133 -0
  56. data/grammars/source.inputrc.json +500 -0
  57. data/grammars/source.isabelle.root.json +1 -1
  58. data/grammars/source.jison.json +3 -0
  59. data/grammars/source.jisonlex.json +3 -0
  60. data/grammars/source.js.json +4 -4
  61. data/grammars/source.julia.json +70 -24
  62. data/grammars/source.kotlin.json +17 -51
  63. data/grammars/source.lcov.json +398 -0
  64. data/grammars/source.lean.json +20 -4
  65. data/grammars/source.lean.markdown.json +2598 -0
  66. data/grammars/source.lex.json +4 -4
  67. data/grammars/source.m2.json +125 -0
  68. data/grammars/source.m4.json +141 -99
  69. data/grammars/source.man-conf.json +47 -35
  70. data/grammars/source.matlab.json +437 -184
  71. data/grammars/source.mcfunction-snapshot.json +21388 -561
  72. data/grammars/source.mcfunction.json +55 -5
  73. data/grammars/source.meson.json +1 -1
  74. data/grammars/source.mlir.json +37 -317
  75. data/grammars/source.modula-3.json +10 -0
  76. data/grammars/source.msl.json +755 -0
  77. data/grammars/source.nasl.json +155 -0
  78. data/grammars/source.neon.json +381 -0
  79. data/grammars/source.nextflow.json +2 -2
  80. data/grammars/source.objc.platform.json +493 -35
  81. data/grammars/source.odin-ehr.json +806 -0
  82. data/grammars/source.odin.json +402 -0
  83. data/grammars/source.openbsd-pkg.contents.json +128 -0
  84. data/grammars/source.opts.json +12 -2
  85. data/grammars/source.perl6fe.json +1 -1
  86. data/grammars/source.postscript.json +358 -103
  87. data/grammars/source.prisma.json +435 -0
  88. data/grammars/source.purescript.json +29 -2
  89. data/grammars/source.python.json +52 -0
  90. data/grammars/source.q.json +150 -63
  91. data/grammars/source.qasm.json +66 -0
  92. data/grammars/source.ql.json +1408 -0
  93. data/grammars/source.r.json +4 -4
  94. data/grammars/source.reason.json +28 -16
  95. data/grammars/source.rego.json +124 -0
  96. data/grammars/source.sass.json +158 -3
  97. data/grammars/source.scala.json +53 -18
  98. data/grammars/source.sieve.json +383 -0
  99. data/grammars/source.solidity.json +1 -1
  100. data/grammars/source.ssh-config.json +1 -14
  101. data/grammars/source.swift.json +162 -2
  102. data/grammars/source.sy.json +2088 -183
  103. data/grammars/source.tags.json +266 -0
  104. data/grammars/source.terraform.json +576 -132
  105. data/grammars/source.tnsaudit.json +256 -0
  106. data/grammars/source.ts.json +246 -70
  107. data/grammars/source.tsx.json +247 -71
  108. data/grammars/source.v.json +587 -761
  109. data/grammars/source.vim-snippet.json +645 -0
  110. data/grammars/source.viml.json +6 -6
  111. data/grammars/source.webassembly.json +10 -0
  112. data/grammars/source.webidl.json +8 -0
  113. data/grammars/source.wgetrc.json +1640 -0
  114. data/grammars/source.wsd.json +781 -0
  115. data/grammars/source.x86.json +7 -3
  116. data/grammars/source.zig.json +231 -360
  117. data/grammars/text.dfy.dafny.json +188 -0
  118. data/grammars/text.html.php.blade.json +535 -528
  119. data/grammars/text.html.riot.json +788 -0
  120. data/grammars/text.muse.json +1471 -0
  121. data/grammars/text.openbsd-pkg.desc.json +78 -0
  122. data/grammars/text.roff.json +49 -1
  123. data/grammars/text.sfd.json +21 -0
  124. data/grammars/text.tex.latex.haskell.json +58 -11
  125. data/grammars/text.vim-help.json +383 -0
  126. data/grammars/text.xml.svg.json +8 -2
  127. data/grammars/version +1 -1
  128. data/lib/linguist/VERSION +1 -1
  129. data/lib/linguist/blob_helper.rb +4 -2
  130. data/lib/linguist/file_blob.rb +1 -1
  131. data/lib/linguist/generated.rb +96 -28
  132. data/lib/linguist/heuristics.yml +64 -4
  133. data/lib/linguist/languages.json +1 -1
  134. data/lib/linguist/languages.yml +408 -49
  135. data/lib/linguist/lazy_blob.rb +10 -10
  136. data/lib/linguist/linguist.bundle +0 -0
  137. data/lib/linguist/samples.json +48129 -31562
  138. data/lib/linguist/shebang.rb +5 -3
  139. data/lib/linguist/vendor.yml +71 -60
  140. metadata +48 -17
  141. data/grammars/source.LS.json +0 -85
  142. data/grammars/source.MCPOST.json +0 -54
  143. data/grammars/source.MOD.json +0 -55
  144. data/grammars/source.apt.json +0 -18
  145. data/grammars/source.jlex.json +0 -322
  146. data/grammars/source.yaml-ext.json +0 -324
  147. data/grammars/text.html.abl.json +0 -70
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "attrValueCSS": {
52
52
  "begin": "(?i)(?\u003c=style)\\G\\s*(=)",
53
- "end": "(?=\\s*(?:[%?/]?\u003e))|([^\\s\"'\u003e]+)|(?\u003c=[\"'])",
53
+ "end": "(?=\\s*(?:[%?/]?\u003e))|(?\u003c=[\"'])([^\\s\u003e]*)|(?:\\G|^)\\s*([^\\s\"'\u003e]+)",
54
54
  "patterns": [
55
55
  {
56
56
  "match": "(?:\\G|^)\\s+(?!/?\u003e)"
@@ -129,6 +129,9 @@
129
129
  },
130
130
  "endCaptures": {
131
131
  "1": {
132
+ "name": "invalid.illegal.syntax.xml.svg"
133
+ },
134
+ "2": {
132
135
  "name": "string.unquoted.xml.svg",
133
136
  "patterns": [
134
137
  {
@@ -140,7 +143,7 @@
140
143
  },
141
144
  "attrValuePlain": {
142
145
  "begin": "\\s*(=)",
143
- "end": "(?=\\s*(?:[%?/]?\u003e))|([^\\s\"'\u003e]+)|(?\u003c=[\"'])",
146
+ "end": "(?=\\s*(?:[%?/]?\u003e))|(?\u003c=[\"'])([^\\s\u003e]*)|(?:\\G|^)\\s*([^\\s\"'\u003e]+)",
144
147
  "patterns": [
145
148
  {
146
149
  "match": "(?:\\G|^)\\s+(?!/?\u003e)"
@@ -193,6 +196,9 @@
193
196
  },
194
197
  "endCaptures": {
195
198
  "1": {
199
+ "name": "invalid.illegal.syntax.xml.svg"
200
+ },
201
+ "2": {
196
202
  "name": "string.unquoted.xml.svg"
197
203
  }
198
204
  }
@@ -1 +1 @@
1
- 7.6.0
1
+ 7.10.0
@@ -1 +1 @@
1
- 7.6.0
1
+ 7.10.0
@@ -270,8 +270,10 @@ module Linguist
270
270
  # also--importantly--without having to duplicate many (potentially
271
271
  # large) strings.
272
272
  begin
273
-
274
- data.split(encoded_newlines_re, -1)
273
+ # `data` is split after having its last `\n` removed by
274
+ # chomp (if any). This prevents the creation of an empty
275
+ # element after the final `\n` character on POSIX files.
276
+ data.chomp.split(encoded_newlines_re, -1)
275
277
  rescue Encoding::ConverterNotFoundError
276
278
  # The data is not splittable in the detected encoding. Assume it's
277
279
  # one big line.
@@ -35,7 +35,7 @@ module Linguist
35
35
  #
36
36
  # Returns a String.
37
37
  def data
38
- @data ||= File.read(@fullpath)
38
+ @data ||= File.read(@fullpath, :encoding => "ASCII-8BIT")
39
39
  end
40
40
 
41
41
  # Public: Get byte size
@@ -62,7 +62,9 @@ module Linguist
62
62
  node_modules? ||
63
63
  go_vendor? ||
64
64
  go_lock? ||
65
+ esy_lock? ||
65
66
  npm_shrinkwrap_or_package_lock? ||
67
+ generated_yarn_plugnplay? ||
66
68
  godeps? ||
67
69
  generated_by_zephir? ||
68
70
  minified_files? ||
@@ -91,7 +93,11 @@ module Linguist
91
93
  generated_grpc_cpp? ||
92
94
  generated_dart? ||
93
95
  generated_perl_ppport_header? ||
94
- generated_gamemakerstudio?
96
+ generated_gamemakerstudio? ||
97
+ generated_gimp? ||
98
+ generated_visualstudio6? ||
99
+ generated_haxe? ||
100
+ generated_jooq?
95
101
  end
96
102
 
97
103
  # Internal: Is the blob an Xcode file?
@@ -118,7 +124,14 @@ module Linguist
118
124
  !!name.match(/(^|\/)Carthage\/Build\//)
119
125
  end
120
126
 
121
- # Internal: Is the blob minified files?
127
+ # Internal: Does extname indicate a filetype which is commonly minified?
128
+ #
129
+ # Returns true or false.
130
+ def maybe_minified?
131
+ ['.js', '.css'].include? extname.downcase
132
+ end
133
+
134
+ # Internal: Is the blob a minified file?
122
135
  #
123
136
  # Consider a file minified if the average line length is
124
137
  # greater then 110c.
@@ -127,32 +140,29 @@ module Linguist
127
140
  #
128
141
  # Returns true or false.
129
142
  def minified_files?
130
- return unless ['.js', '.css'].include? extname
131
- if lines.any?
143
+ if maybe_minified? and lines.any?
132
144
  (lines.inject(0) { |n, l| n += l.length } / lines.length) > 110
133
145
  else
134
146
  false
135
147
  end
136
148
  end
137
149
 
138
- # Internal: Does the blob contain a source map reference?
150
+ # Internal: Does the blob contain a source-map reference?
139
151
  #
140
- # We assume that if one of the last 2 lines starts with a source map
152
+ # We assume that if one of the last 2 lines starts with a source-map
141
153
  # reference, then the current file was generated from other files.
142
154
  #
143
155
  # We use the last 2 lines because the last line might be empty.
144
156
  #
145
- # We only handle JavaScript, no CSS support yet.
146
- #
147
157
  # Returns true or false.
148
158
  def has_source_map?
149
- return false unless extname.downcase == '.js'
150
- lines.last(2).any? { |line| line.start_with?('//# sourceMappingURL') }
159
+ return false unless maybe_minified?
160
+ lines.last(2).any? { |l| l.match(/^\/[*\/][\#@] source(?:Mapping)?URL|sourceURL=/) }
151
161
  end
152
162
 
153
- # Internal: Is the blob a generated source map?
163
+ # Internal: Is the blob a generated source-map?
154
164
  #
155
- # Source Maps usually have .css.map or .js.map extensions. In case they
165
+ # Source-maps usually have .css.map or .js.map extensions. In case they
156
166
  # are not following the name convention, detect them based on the content.
157
167
  #
158
168
  # Returns true or false.
@@ -293,10 +303,10 @@ module Linguist
293
303
  return false unless extname == '.go'
294
304
  return false unless lines.count > 1
295
305
 
296
- return lines[0].include?("Code generated by")
306
+ return lines.first(40).any? { |l| l.include? "Code generated by" }
297
307
  end
298
308
 
299
- PROTOBUF_EXTENSIONS = ['.py', '.java', '.h', '.cc', '.cpp', '.m', '.rb']
309
+ PROTOBUF_EXTENSIONS = ['.py', '.java', '.h', '.cc', '.cpp', '.m', '.rb', '.php']
300
310
 
301
311
  # Internal: Is the blob a C++, Java or Python source file generated by the
302
312
  # Protocol Buffer compiler?
@@ -306,7 +316,7 @@ module Linguist
306
316
  return false unless PROTOBUF_EXTENSIONS.include?(extname)
307
317
  return false unless lines.count > 1
308
318
 
309
- return lines[0].include?("Generated by the protocol buffer compiler. DO NOT EDIT!")
319
+ return lines.first(3).any? { |l| l.include?("Generated by the protocol buffer compiler. DO NOT EDIT!") }
310
320
  end
311
321
 
312
322
  # Internal: Is the blob a Javascript source file generated by the
@@ -363,11 +373,25 @@ module Linguist
363
373
  !!name.match(/(Gopkg|glide)\.lock/)
364
374
  end
365
375
 
376
+ # Internal: Is the blob a generated esy lock file?
377
+ #
378
+ # Returns true or false.
379
+ def esy_lock?
380
+ !!name.match(/(^|\/)(\w+\.)?esy.lock$/)
381
+ end
382
+
366
383
  # Internal: Is the blob a generated npm shrinkwrap or package lock file?
367
384
  #
368
385
  # Returns true or false.
369
386
  def npm_shrinkwrap_or_package_lock?
370
- name.match(/npm-shrinkwrap\.json/) || name.match(/package-lock\.json/)
387
+ !!name.match(/npm-shrinkwrap\.json/) || !!name.match(/package-lock\.json/)
388
+ end
389
+
390
+ # Internal: Is the blob a generated Yarn Plug'n'Play?
391
+ #
392
+ # Returns true or false.
393
+ def generated_yarn_plugnplay?
394
+ !!name.match(/(^|\/)\.pnp\.(c|m)?js$/)
371
395
  end
372
396
 
373
397
  # Internal: Is the blob part of Godeps/,
@@ -426,7 +450,7 @@ module Linguist
426
450
  #
427
451
  # Returns true or false.
428
452
  def pipenv_lock?
429
- name.match(/Pipfile\.lock/)
453
+ !!name.match(/Pipfile\.lock/)
430
454
  end
431
455
 
432
456
  # Internal: Is it a KiCAD or GFortran module file?
@@ -591,6 +615,38 @@ module Linguist
591
615
  lines[0] =~ /^\d\.\d\.\d.+\|\{/
592
616
  end
593
617
 
618
+ # Internal: Is this a generated GIMP C image file?
619
+ #
620
+ # GIMP saves C sources with one of two comment forms:
621
+ # * `/* GIMP RGB C-Source image dump (<filename>.c) */` (C source export)
622
+ # * `/* GIMP header image file format (RGB): <filename>.h */` (Header export)
623
+ #
624
+ # Return true or false
625
+ def generated_gimp?
626
+ return false unless ['.c', '.h'].include? extname
627
+ return false unless lines.count > 0
628
+ return lines[0].match(/\/\* GIMP [a-zA-Z0-9\- ]+ C\-Source image dump \(.+?\.c\) \*\//) ||
629
+ lines[0].match(/\/\* GIMP header image file format \([a-zA-Z0-9\- ]+\)\: .+?\.h \*\//)
630
+ end
631
+
632
+ # Internal: Is this a generated Microsoft Visual Studio 6.0 build file?
633
+ #
634
+ # Return true or false
635
+ def generated_visualstudio6?
636
+ return false unless extname.downcase == '.dsp'
637
+ lines.first(3).any? { |l| l.include? '# Microsoft Developer Studio Generated Build File' }
638
+ end
639
+
640
+ HAXE_EXTENSIONS = ['.js', '.py', '.lua', '.cpp', '.h', '.java', '.cs', '.php']
641
+
642
+ # Internal: Is this a generated Haxe-generated source file?
643
+ #
644
+ # Return true or false
645
+ def generated_haxe?
646
+ return false unless HAXE_EXTENSIONS.include?(extname)
647
+ return lines.first(3).any? { |l| l.include?("Generated by Haxe") }
648
+ end
649
+
594
650
  # Internal: Is this a generated HTML file?
595
651
  #
596
652
  # HTML documents generated by authoring tools often include a
@@ -621,23 +677,35 @@ module Linguist
621
677
  return false if matches.empty?
622
678
  return matches.map {|x| extract_html_meta(x) }.any? do |attr|
623
679
  attr["name"].to_s.downcase == 'generator' &&
624
- attr["content"].match(/^
625
- ( org \s+ mode
626
- | j?latex2html
627
- | groff
628
- | makeinfo
629
- | texi2html
630
- ) \b
631
- /ix)
680
+ [attr["content"], attr["value"]].any? do |cv|
681
+ !cv.nil? &&
682
+ cv.match(/^
683
+ ( org \s+ mode
684
+ | j?latex2html
685
+ | groff
686
+ | makeinfo
687
+ | texi2html
688
+ | ronn
689
+ ) \b
690
+ /ix)
691
+ end
632
692
  end
633
693
  end
634
694
 
695
+ # Internal: Is this a generated jOOQ file?
696
+ #
697
+ # Return true or false
698
+ def generated_jooq?
699
+ return false unless extname.downcase == '.java'
700
+ lines.first(2).any? { |l| l.include? 'This file is generated by jOOQ.' }
701
+ end
702
+
635
703
  # Internal: Extract a Hash of name/content pairs from an HTML <meta> tag
636
704
  def extract_html_meta(match)
637
705
  (match.last.sub(/\/\Z/, "").strip.scan(/
638
- (?<=^|\s) # Check for preceding whitespace
639
- (name|content) # Attribute names we're interested in
640
- \s* = \s* # Key-value separator
706
+ (?<=^|\s) # Check for preceding whitespace
707
+ (name|content|value) # Attribute names we're interested in
708
+ \s* = \s* # Key-value separator
641
709
 
642
710
  # Attribute value
643
711
  ( "[^"]+" # name="value"
@@ -58,6 +58,10 @@ disambiguations:
58
58
  pattern: '^[=-]+(\s|\n)|{{[A-Za-z]'
59
59
  - language: AGS Script
60
60
  pattern: '^(\/\/.+|((import|export)\s+)?(function|int|float|char)\s+((room|repeatedly|on|game)_)?([A-Za-z]+[A-Za-z_0-9]+)\s*[;\(])'
61
+ - extensions: ['.asm']
62
+ rules:
63
+ - language: Motorola 68K Assembly
64
+ named_pattern: m68k
61
65
  - extensions: ['.asy']
62
66
  rules:
63
67
  - language: LTspice Symbol
@@ -113,6 +117,12 @@ disambiguations:
113
117
  # : dependency
114
118
  # path/file.ext1 : some/path/../file.ext2
115
119
  pattern: '([\/\\].*:\s+.*\s\\$|: \\$|^[ %]:|^[\w\s\/\\.]+\w+\.\w+\s*:\s+[\w\s\/\\.]+\w+\.\w+)'
120
+ - extensions: ['.dsp']
121
+ rules:
122
+ - language: Microsoft Developer Studio Project
123
+ pattern: '# Microsoft Developer Studio Generated Build File'
124
+ - language: Faust
125
+ pattern: '\bprocess\s*[(=]|\b(library|import)\s*\(\s*"|\bdeclare\s+(name|version|author|copyright|license)\s+"'
116
126
  - extensions: ['.ecl']
117
127
  rules:
118
128
  - language: ECLiPSe
@@ -173,6 +183,8 @@ disambiguations:
173
183
  - language: Game Maker Language
174
184
  - extensions: ['.gs']
175
185
  rules:
186
+ - language: GLSL
187
+ pattern: '^#version\s+[0-9]+\b'
176
188
  - language: Gosu
177
189
  pattern: '^uses java\.'
178
190
  - extensions: ['.h']
@@ -185,6 +197,12 @@ disambiguations:
185
197
  rules:
186
198
  - language: Hack
187
199
  pattern: '<\?hh'
200
+ - extensions: ['.i']
201
+ rules:
202
+ - language: Motorola 68K Assembly
203
+ named_pattern: m68k
204
+ - language: SWIG
205
+ pattern: '^[ \t]*%[a-z_]+\b|^%[{}]$'
188
206
  - extensions: ['.ice']
189
207
  rules:
190
208
  - language: JSON
@@ -192,10 +210,19 @@ disambiguations:
192
210
  - language: Slice
193
211
  - extensions: ['.inc']
194
212
  rules:
213
+ - language: Motorola 68K Assembly
214
+ named_pattern: m68k
195
215
  - language: PHP
196
216
  pattern: '^<\?(?:php)?'
197
217
  - language: SourcePawn
198
218
  pattern: '^public\s+(?:SharedPlugin(?:\s+|:)__pl_\w+\s*=(?:\s*{)?|(?:void\s+)?__pl_\w+_SetNTVOptional\(\)(?:\s*{)?)'
219
+ - language: NASL
220
+ pattern:
221
+ - '^\s*include\s*\(\s*(?:"|'')[\\/\w\-\.:\s]+\.(?:nasl|inc)\s*(?:"|'')\s*\)\s*;'
222
+ - '^\s*(?:global|local)_var\s+(?:\w+(?:\s*=\s*[\w\-"'']+)?\s*)(?:,\s*\w+(?:\s*=\s*[\w\-"'']+)?\s*)*+\s*;'
223
+ - '^\s*namespace\s+\w+\s*{'
224
+ - '^\s*object\s+\w+\s*(?:extends\s+\w+(?:::\w+)?)?\s*{'
225
+ - '^\s*(?:public\s+|private\s+|\s*)function\s+\w+\s*\([\w\s,]*\)\s*{'
199
226
  - language: POV-Ray SDL
200
227
  pattern: '^\s*#(declare|local|macro|while)\s'
201
228
  - extensions: ['.l']
@@ -237,6 +264,10 @@ disambiguations:
237
264
  pattern: '^\s*%'
238
265
  - language: Limbo
239
266
  pattern: '^\w+\s*:\s*module\s*{'
267
+ - extensions: ['.mask']
268
+ rules:
269
+ - language: Unity3d Asset
270
+ pattern: 'tag:unity3d.com'
240
271
  - extensions: ['.md']
241
272
  rules:
242
273
  - language: Markdown
@@ -285,6 +316,19 @@ disambiguations:
285
316
  - language: NL
286
317
  pattern: '^(b|g)[0-9]+ '
287
318
  - language: NewLisp
319
+ - extensions: ['.odin']
320
+ rules:
321
+ - language: Object Data Instance Notation
322
+ pattern: '(?:^|<)\s*[A-Za-z0-9_]+\s*=\s*<'
323
+ - language: Odin
324
+ pattern: 'package\s+\w+|\b(?:im|ex)port\s*"[\w:./]+"|\w+\s*::\s*(?:proc|struct)\s*\(|^\s*//\s'
325
+ - extensions: ['.p']
326
+ rules:
327
+ - language: Gnuplot
328
+ pattern:
329
+ - '^s?plot\b'
330
+ - '^set\s+(term|terminal|out|output|[xy]tics|[xy]label|[xy]range|style)\b'
331
+ - language: OpenEdge ABL
288
332
  - extensions: ['.php']
289
333
  rules:
290
334
  - language: Hack
@@ -297,7 +341,7 @@ disambiguations:
297
341
  pattern: '^[^#]*:-'
298
342
  - language: Perl
299
343
  named_pattern: perl5
300
- - language: Perl 6
344
+ - language: Raku
301
345
  named_pattern: perl6
302
346
  - extensions: ['.plist']
303
347
  rules:
@@ -308,7 +352,7 @@ disambiguations:
308
352
  rules:
309
353
  - language: Perl
310
354
  named_pattern: perl5
311
- - language: Perl 6
355
+ - language: Raku
312
356
  named_pattern: perl6
313
357
  - language: X PixMap
314
358
  pattern: '^\s*\/\* XPM \*\/'
@@ -325,6 +369,8 @@ disambiguations:
325
369
  pattern: '^\s+\w+\s+=>\s'
326
370
  - extensions: ['.pro']
327
371
  rules:
372
+ - language: Proguard
373
+ pattern: '^-(include\b.*\.pro$|keep\b|keepclassmembers\b|keepattributes\b)'
328
374
  - language: Prolog
329
375
  pattern: '^[^\[#]+:-'
330
376
  - language: INI
@@ -384,6 +430,10 @@ disambiguations:
384
430
  pattern: '^(use |fn |mod |pub |macro_rules|impl|#!?\[)'
385
431
  - language: RenderScript
386
432
  pattern: '#include|#pragma\s+(rs|version)|__attribute__'
433
+ - extensions: ['.s']
434
+ rules:
435
+ - language: Motorola 68K Assembly
436
+ named_pattern: m68k
387
437
  - extensions: ['.sc']
388
438
  rules:
389
439
  - language: SuperCollider
@@ -417,7 +467,7 @@ disambiguations:
417
467
  rules:
418
468
  - language: Perl
419
469
  named_pattern: perl5
420
- - language: Perl 6
470
+ - language: Raku
421
471
  named_pattern: perl6
422
472
  - language: Turing
423
473
  pattern: '^\s*%[ \t]+|^\s*var\s+\w+(\s*:\s*\w+)?\s*:=\s*\w+'
@@ -456,7 +506,7 @@ disambiguations:
456
506
  rules:
457
507
  - language: Vim script
458
508
  pattern: '^UseVimball'
459
- - language: Visual Basic
509
+ - language: VBA
460
510
  - extensions: ['.w']
461
511
  rules:
462
512
  - language: OpenEdge ABL
@@ -465,6 +515,8 @@ disambiguations:
465
515
  pattern: '^@(<|\w+\.)'
466
516
  - extensions: ['.x']
467
517
  rules:
518
+ - language: DirectX 3D File
519
+ pattern: '^xof 030(2|3)(?:txt|bin|tzip|bzip)\b'
468
520
  - language: RPC
469
521
  pattern: '\b(program|version)\s+\w+\s*{|\bunion\s+\w+\s+switch\s*\('
470
522
  - language: Logos
@@ -487,6 +539,14 @@ named_patterns:
487
539
  - 'std::\w+'
488
540
  fortran: '^(?i:[c*][^abd-z]| (subroutine|program|end|data)\s|\s*!)'
489
541
  key_equals_value: '^[^#!;][^=]*='
542
+ m68k:
543
+ - '(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b'
544
+ - '(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+'
545
+ - '(?im)^\s*move\.[bwl]\s+.*\b[ad]\d'
546
+ - '(?im)^\s*movem\.[bwl]\b'
547
+ - '(?im)^\s*move[mp](?:\.[wl])?\b'
548
+ - '(?im)^\s*btst\b'
549
+ - '(?im)^\s*dbra\b'
490
550
  objectivec: '^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])'
491
551
  perl5: '\buse\s+(?:strict\b|v?5\.)'
492
552
  perl6: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'