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.
- checksums.yaml +4 -4
- data/grammars/etc.json +1 -1
- data/grammars/gno.mod.json +1 -0
- data/grammars/markdown.mojo.codeblock.json +1 -0
- data/grammars/markdown.move.codeblock.json +1 -1
- data/grammars/source.4dm.json +1 -1
- data/grammars/source.abl.json +1 -1
- data/grammars/source.aleo.json +1 -0
- data/grammars/source.apex.json +1 -1
- data/grammars/source.astro.json +1 -1
- data/grammars/source.baml.json +1 -0
- data/grammars/source.bb.json +1 -1
- data/grammars/source.bird2.json +1 -0
- data/grammars/source.blueprint.json +1 -0
- data/grammars/source.bnd.json +1 -1
- data/grammars/source.brs.embedded.xml.json +1 -0
- data/grammars/source.bsl.json +1 -1
- data/grammars/source.c++.json +1 -1
- data/grammars/source.c.json +1 -1
- data/grammars/source.c3.json +1 -1
- data/grammars/source.carbon.json +1 -0
- data/grammars/source.cel.json +1 -0
- data/grammars/source.cl.json +1 -1
- data/grammars/source.clar.json +1 -1
- data/grammars/source.cmake.json +1 -1
- data/grammars/source.cmd.json +1 -1
- data/grammars/source.comment-string.wesl.json +1 -1
- data/grammars/source.comment-string.wgsl.json +1 -1
- data/grammars/source.cs.json +1 -1
- data/grammars/source.csswg.json +1 -1
- data/grammars/source.csv.json +1 -1
- data/grammars/source.curlrc.json +1 -1
- data/grammars/source.dart.json +1 -1
- data/grammars/source.daslang.json +1 -1
- data/grammars/source.data-weave.json +1 -1
- data/grammars/source.dds.dspf.json +1 -1
- data/grammars/source.dds.icff.json +1 -1
- data/grammars/source.dds.lf.json +1 -1
- data/grammars/source.dds.pf.json +1 -1
- data/grammars/source.dds.prtf.json +1 -1
- data/grammars/source.deq.json +1 -0
- data/grammars/source.emacs.lisp.json +1 -1
- data/grammars/source.fift.json +1 -0
- data/grammars/source.flix.json +1 -1
- data/grammars/source.fpp.json +1 -0
- data/grammars/source.func.json +1 -0
- data/grammars/source.gdscript.json +1 -1
- data/grammars/source.gedcom.json +1 -1
- data/grammars/source.gimprc.json +1 -0
- data/grammars/source.gimpres.json +1 -0
- data/grammars/source.gitconfig.json +1 -1
- data/grammars/source.gno.json +1 -0
- data/grammars/source.graphql.json +1 -1
- data/grammars/source.gtkrc.json +1 -0
- data/grammars/source.hack.json +1 -1
- data/grammars/source.hosts.json +1 -1
- data/grammars/source.hx.json +1 -1
- data/grammars/source.hxml.json +1 -1
- data/grammars/source.il.json +1 -0
- data/grammars/source.interp.json +1 -0
- data/grammars/source.jac.json +1 -1
- data/grammars/source.jactoml.json +1 -0
- data/grammars/source.jai.json +1 -1
- data/grammars/source.jass.json +1 -0
- data/grammars/source.julia.json +1 -1
- data/grammars/source.just.json +1 -1
- data/grammars/source.kcl.json +1 -1
- data/grammars/source.koka.json +1 -1
- data/grammars/source.lean4.markdown.json +1 -1
- data/grammars/source.leo.json +1 -1
- data/grammars/source.lobster.json +1 -0
- data/grammars/source.logos.json +1 -1
- data/grammars/source.luau.json +1 -1
- data/grammars/source.m2.json +1 -1
- data/grammars/source.m3u.json +1 -1
- data/grammars/source.matlab.json +1 -1
- data/grammars/source.mdx.astro.json +1 -1
- data/grammars/source.mi.json +1 -1
- data/grammars/source.mo.json +1 -1
- data/grammars/source.mojo.json +1 -1
- data/grammars/source.moonbit.config.json +1 -0
- data/grammars/source.moonbit.json +1 -1
- data/grammars/source.move.json +1 -1
- data/grammars/source.ms.json +1 -0
- data/grammars/source.nim.json +1 -1
- data/grammars/source.openqasm.json +1 -1
- data/grammars/source.opy.json +1 -0
- data/grammars/source.paperspecs.json +1 -0
- data/grammars/source.pic.json +1 -1
- data/grammars/source.pkgconf.json +1 -0
- data/grammars/source.pl.json +1 -0
- data/grammars/source.pnlgrp.json +1 -1
- data/grammars/source.powerquery.json +1 -0
- data/grammars/source.powershell.json +1 -1
- data/grammars/source.prisma.json +1 -1
- data/grammars/source.qsharp.json +1 -1
- data/grammars/source.quint.json +1 -0
- data/grammars/source.rarlist.json +1 -0
- data/grammars/source.rascript.json +1 -1
- data/grammars/source.record-jar.json +1 -1
- data/grammars/source.redscript.json +1 -0
- data/grammars/source.rego.json +1 -1
- data/grammars/source.rhai.json +1 -0
- data/grammars/source.rpg.json +1 -1
- data/grammars/source.rpgle.json +1 -1
- data/grammars/source.rust.json +1 -1
- data/grammars/source.scala.json +1 -1
- data/grammars/source.slang.json +1 -1
- data/grammars/source.slint.json +1 -1
- data/grammars/source.smithy.json +1 -1
- data/grammars/source.soql.json +1 -1
- data/grammars/source.spicedb-yaml.json +1 -0
- data/grammars/source.spicedb.json +1 -0
- data/grammars/source.stan.json +1 -1
- data/grammars/source.stim.json +1 -0
- data/grammars/source.surrealql.json +1 -1
- data/grammars/source.swift.json +1 -1
- data/grammars/source.tasm.json +1 -0
- data/grammars/source.tlb.json +1 -0
- data/grammars/source.tolk.json +1 -0
- data/grammars/source.ucode-template.json +1 -0
- data/grammars/source.ucode.json +1 -0
- data/grammars/source.uri-list.json +1 -0
- data/grammars/source.v.json +1 -1
- data/grammars/source.vento.json +1 -1
- data/grammars/source.verse.json +1 -0
- data/grammars/source.vespaSchema.json +1 -0
- data/grammars/source.vhs.json +1 -0
- data/grammars/source.wgsl.json +1 -1
- data/grammars/source.yaml.salt.json +1 -1
- data/grammars/spicedb-yaml.injection.json +1 -0
- data/grammars/text.bbcode.json +1 -0
- data/grammars/text.cachedir.json +1 -0
- data/grammars/text.cookie-jar.json +1 -0
- data/grammars/text.html.handlebars.json +1 -1
- data/grammars/text.html.vue.json +1 -1
- data/grammars/text.mac-tts.json +1 -0
- data/grammars/text.recfile.json +1 -0
- data/grammars/text.roff.json +1 -1
- data/grammars/version +1 -1
- data/lib/linguist/VERSION +1 -1
- data/lib/linguist/blob_helper.rb +19 -0
- data/lib/linguist/classifier.rb +2 -1
- data/lib/linguist/generated.rb +40 -0
- data/lib/linguist/generic.yml +3 -0
- data/lib/linguist/heuristics.yml +97 -5
- data/lib/linguist/language.rb +13 -9
- data/lib/linguist/languages.yml +368 -37
- data/lib/linguist/languages_data.rb +7663 -0
- data/lib/linguist/lazy_blob.rb +25 -2
- data/lib/linguist/samples.rb +4 -10
- data/lib/linguist/samples_data.rb +196100 -0
- data/lib/linguist/vendor.yml +3 -0
- metadata +54 -18
- data/grammars/markdown.bicep.codeblock.json +0 -1
- data/lib/linguist/languages.json +0 -1
- data/lib/linguist/samples.json +0 -1
data/grammars/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
9.
|
|
1
|
+
9.7.0
|
data/lib/linguist/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
9.
|
|
1
|
+
9.7.0
|
data/lib/linguist/blob_helper.rb
CHANGED
|
@@ -119,6 +119,24 @@ module Linguist
|
|
|
119
119
|
@detect_encoding ||= CharlockHolmes::EncodingDetector.new.detect(data) if data
|
|
120
120
|
end
|
|
121
121
|
|
|
122
|
+
# Public: Is the blob content a Git LFS pointer file?
|
|
123
|
+
#
|
|
124
|
+
# Return true or false
|
|
125
|
+
def lfs_pointer?
|
|
126
|
+
return false unless data
|
|
127
|
+
|
|
128
|
+
data.start_with?("version https://git-lfs.github.com/spec/v1\n") &&
|
|
129
|
+
data.include?("\noid sha256:") &&
|
|
130
|
+
data.match?(/\nsize \d+\n?\z/)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Public: Is the blob path tracked by Git LFS?
|
|
134
|
+
#
|
|
135
|
+
# Return true or false
|
|
136
|
+
def lfs_tracked?
|
|
137
|
+
false
|
|
138
|
+
end
|
|
139
|
+
|
|
122
140
|
# Public: Is the blob binary?
|
|
123
141
|
#
|
|
124
142
|
# Return true or false
|
|
@@ -380,6 +398,7 @@ module Linguist
|
|
|
380
398
|
!vendored? &&
|
|
381
399
|
!documentation? &&
|
|
382
400
|
!generated? &&
|
|
401
|
+
!(lfs_tracked? && lfs_pointer?) &&
|
|
383
402
|
language && ( defined?(detectable?) && !detectable?.nil? ?
|
|
384
403
|
detectable? :
|
|
385
404
|
DETECTABLE_TYPES.include?(language.type)
|
data/lib/linguist/classifier.rb
CHANGED
|
@@ -136,7 +136,8 @@ module Linguist
|
|
|
136
136
|
|
|
137
137
|
scores = {}
|
|
138
138
|
languages.each do |language|
|
|
139
|
-
|
|
139
|
+
fs_name = Language.find_by_name(language).fs_name
|
|
140
|
+
centroid = @centroids[fs_name || language]
|
|
140
141
|
score = Classifier.similarity(vec, centroid)
|
|
141
142
|
if score > 0.0
|
|
142
143
|
scores[language] = score
|
data/lib/linguist/generated.rb
CHANGED
|
@@ -92,11 +92,15 @@ module Linguist
|
|
|
92
92
|
pipenv_lock? ||
|
|
93
93
|
gradle_wrapper? ||
|
|
94
94
|
maven_wrapper? ||
|
|
95
|
+
mise_lock? ||
|
|
96
|
+
secrets_baseline? ||
|
|
97
|
+
julia_manifest? ||
|
|
95
98
|
generated_go? ||
|
|
96
99
|
generated_protocol_buffer_from_go? ||
|
|
97
100
|
generated_protocol_buffer? ||
|
|
98
101
|
generated_javascript_protocol_buffer? ||
|
|
99
102
|
generated_typescript_protocol_buffer? ||
|
|
103
|
+
generated_twirp_ruby? ||
|
|
100
104
|
generated_apache_thrift? ||
|
|
101
105
|
generated_jni_header? ||
|
|
102
106
|
vcr_cassette? ||
|
|
@@ -398,6 +402,21 @@ module Linguist
|
|
|
398
402
|
return lines[0].include?("Code generated by protoc-gen-ts_proto. DO NOT EDIT.")
|
|
399
403
|
end
|
|
400
404
|
|
|
405
|
+
# Internal: Is the blob a Ruby source file generated by the
|
|
406
|
+
# protoc-gen-twirp_ruby plugin?
|
|
407
|
+
#
|
|
408
|
+
# Files generated by protoc-gen-twirp_ruby start with a header like:
|
|
409
|
+
#
|
|
410
|
+
# # Code generated by protoc-gen-twirp_ruby 1.14.1, DO NOT EDIT.
|
|
411
|
+
#
|
|
412
|
+
# Returns true or false.
|
|
413
|
+
def generated_twirp_ruby?
|
|
414
|
+
return false unless extname == ".rb"
|
|
415
|
+
return false unless lines.count > 1
|
|
416
|
+
|
|
417
|
+
return lines.first(3).any? { |l| l.include?("Code generated by protoc-gen-twirp_ruby") && l.include?("DO NOT EDIT.") }
|
|
418
|
+
end
|
|
419
|
+
|
|
401
420
|
APACHE_THRIFT_EXTENSIONS = ['.rb', '.py', '.go', '.js', '.m', '.java', '.h', '.cc', '.cpp', '.php']
|
|
402
421
|
|
|
403
422
|
# Internal: Is the blob generated by Apache Thrift compiler?
|
|
@@ -582,6 +601,27 @@ module Linguist
|
|
|
582
601
|
!!name.match(/(?:^|\/)mvnw(?:\.cmd)?$/i)
|
|
583
602
|
end
|
|
584
603
|
|
|
604
|
+
# Internal: Is the blob a mise-en-place lock file?
|
|
605
|
+
#
|
|
606
|
+
# Returns true or false.
|
|
607
|
+
def mise_lock?
|
|
608
|
+
!!name.match(/(?:^|\/)mise(?:\.[^\/]+)?\.lock$/)
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
# Internal: Is the blob a detect-secrets baseline file?
|
|
612
|
+
#
|
|
613
|
+
# Returns true or false.
|
|
614
|
+
def secrets_baseline?
|
|
615
|
+
!!name.match(/(?:^|\/)\.secrets\.baseline$/)
|
|
616
|
+
end
|
|
617
|
+
|
|
618
|
+
# Internal: Is the blob a Julia Manifest.toml file?
|
|
619
|
+
#
|
|
620
|
+
# Returns true or false.
|
|
621
|
+
def julia_manifest?
|
|
622
|
+
!!name.match(/(?:^|\/)(Julia)?Manifest(-v\d+\.\d+)?\.toml$/)
|
|
623
|
+
end
|
|
624
|
+
|
|
585
625
|
# Is the blob a VCR Cassette file?
|
|
586
626
|
#
|
|
587
627
|
# Returns true or false
|
data/lib/linguist/generic.yml
CHANGED
data/lib/linguist/heuristics.yml
CHANGED
|
@@ -65,8 +65,20 @@ disambiguations:
|
|
|
65
65
|
rules:
|
|
66
66
|
# AL pattern source from https://github.com/microsoft/AL/blob/master/grammar/alsyntax.tmlanguage - keyword.other.applicationobject.al
|
|
67
67
|
- language: AL
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
pattern:
|
|
69
|
+
# An object declaration, "<kind> <id> <name>", starting a line, with the
|
|
70
|
+
# name required. The anchor matters: page and table are common Perl
|
|
71
|
+
# variable names and "Table of contents" is ordinary prose, so matching
|
|
72
|
+
# these keywords anywhere would claim Perl AutoLoader chunks.
|
|
73
|
+
# AL tooling commonly writes a UTF-8 BOM. It cannot be matched as bytes
|
|
74
|
+
# here: blob data is ASCII-8BIT, and a pattern containing the BOM bytes
|
|
75
|
+
# compiles to a UTF-8 Regexp, which raises Encoding::CompatibilityError.
|
|
76
|
+
# \A\W{0,3} skips it, the same way the B4X rule below does.
|
|
77
|
+
- '(?:\A\W{0,3}|^)\s*(?i:(CODEUNIT|PAGE|PAGEEXTENSION|PAGECUSTOMIZATION|ENUM|ENUMEXTENSION|QUERY|REPORT|REPORTEXTENSION|TABLE|TABLEEXTENSION|XMLPORT|PROFILE|PROFILEEXTENSION|CONTROLADDIN|INTERFACE|PERMISSIONSET|PERMISSIONSETEXTENSION|ENTITLEMENT))\b\s+(?:\d|"|[A-Z])'
|
|
78
|
+
# DotNet alias objects are a bare keyword on their own line
|
|
79
|
+
- '(?:\A\W{0,3}|^)\s*(?i:DOTNET)\s*$'
|
|
80
|
+
# Namespace and using declarations, always terminated with a semicolon
|
|
81
|
+
- '(?:\A\W{0,3}|^)\s*(?i:(NAMESPACE|USING))\s+[\w.]+\s*;'
|
|
70
82
|
# Open-ended fallback to Perl AutoLoader
|
|
71
83
|
- language: Perl
|
|
72
84
|
- extensions: ['.alg']
|
|
@@ -107,6 +119,15 @@ disambiguations:
|
|
|
107
119
|
- language: LTspice Symbol
|
|
108
120
|
pattern: '^SymbolType[ \t]'
|
|
109
121
|
- language: Asymptote
|
|
122
|
+
- extensions: ['.b']
|
|
123
|
+
rules:
|
|
124
|
+
- language: B
|
|
125
|
+
pattern: '^\s*(?:extrn|auto|goto)\b'
|
|
126
|
+
negative_pattern: '^\s*(?:implement|include|load|ref)\b'
|
|
127
|
+
- language: Brainfuck
|
|
128
|
+
pattern: '(>\+>|>\+<)'
|
|
129
|
+
- language: Limbo
|
|
130
|
+
pattern: '(?:^\w+\s*:\s*module\s*\{)|(implement \w+;)'
|
|
110
131
|
- extensions: ['.bas']
|
|
111
132
|
rules:
|
|
112
133
|
- language: B4X
|
|
@@ -209,6 +230,14 @@ disambiguations:
|
|
|
209
230
|
rules:
|
|
210
231
|
- language: Gerber Image
|
|
211
232
|
pattern: '^[DGMT][0-9]{2}\*(?:\r?\n|\r)'
|
|
233
|
+
- extensions: ['.container', '.mount', '.network', '.service', '.socket', '.target', '.timer']
|
|
234
|
+
rules:
|
|
235
|
+
- language: INI
|
|
236
|
+
and:
|
|
237
|
+
# e.g., "[foobar]" or "# [commented out]"
|
|
238
|
+
- pattern: '^[#\s]*\[[^\]]+\]\s*$'
|
|
239
|
+
- named_pattern: key_equals_value
|
|
240
|
+
- negative_pattern: '^[^#;=\[]+[^ \r\n=]$'
|
|
212
241
|
- extensions: ['.cs']
|
|
213
242
|
rules:
|
|
214
243
|
- language: Smalltalk
|
|
@@ -272,6 +301,11 @@ disambiguations:
|
|
|
272
301
|
pattern: '^\s*(?:%%|main\s*\(.*?\)\s*->)'
|
|
273
302
|
- language: JavaScript
|
|
274
303
|
pattern: '\/\/|["'']use strict["'']|export\s+default\s|\/\*(?:.|[\r\n])*?\*\/'
|
|
304
|
+
- extensions: ['.eslintrc']
|
|
305
|
+
rules:
|
|
306
|
+
- language: YAML
|
|
307
|
+
named_pattern: yaml
|
|
308
|
+
- language: JSON with Comments
|
|
275
309
|
- extensions: ['.ex']
|
|
276
310
|
rules:
|
|
277
311
|
- language: Elixir
|
|
@@ -295,6 +329,15 @@ disambiguations:
|
|
|
295
329
|
pattern: '^: '
|
|
296
330
|
- language: Fortran
|
|
297
331
|
named_pattern: fortran
|
|
332
|
+
- extensions: ['.fpp']
|
|
333
|
+
rules:
|
|
334
|
+
- language: FPP
|
|
335
|
+
pattern:
|
|
336
|
+
- '^\s*(active|passive|queued)\s+component\s'
|
|
337
|
+
- '^\s*(module|topology|struct|enum|port|interface)\s+[A-Za-z_$][A-Za-z0-9_]*\s*\{'
|
|
338
|
+
- '^\s*instance\s+[A-Za-z_$][A-Za-z0-9_]*\s*:'
|
|
339
|
+
- language: Fortran
|
|
340
|
+
named_pattern: fortran
|
|
298
341
|
- extensions: ['.fr']
|
|
299
342
|
rules:
|
|
300
343
|
- language: Forth
|
|
@@ -434,6 +477,17 @@ disambiguations:
|
|
|
434
477
|
pattern:
|
|
435
478
|
- '^(?i)[^"m]*mov\s+[^\s]+,'
|
|
436
479
|
- '^\s+(?i)db\s+[a-z\d]'
|
|
480
|
+
- extensions: ['.j']
|
|
481
|
+
rules:
|
|
482
|
+
- language: Jasmin
|
|
483
|
+
pattern: '^\s*\.(?:class|super|method|end\s+method|limit|field|source|bytecode)\b'
|
|
484
|
+
- language: Objective-J
|
|
485
|
+
pattern: '^\s*@(?:import|implementation|protocol|interface|typedef|end)\b'
|
|
486
|
+
- language: JASS
|
|
487
|
+
pattern:
|
|
488
|
+
- '^\s*(?:constant\s+)?(?:function|native)\s+\w+\s+takes\b'
|
|
489
|
+
- '^\s*end(?:function|globals|loop)\s*$'
|
|
490
|
+
- '^\s*(?:call|set|local|exitwhen)\s+\S'
|
|
437
491
|
- extensions: ['.json']
|
|
438
492
|
rules:
|
|
439
493
|
- language: OASv2-json
|
|
@@ -472,7 +526,7 @@ disambiguations:
|
|
|
472
526
|
- extensions: ['.lp']
|
|
473
527
|
rules:
|
|
474
528
|
- language: Lambdapi
|
|
475
|
-
pattern: '(
|
|
529
|
+
pattern: '^\s*(?:opaque\s+symbol|symbol|rule|notation|constant|injective|require(?:\s+open)?|open|type|assert(?:not)?|compute)\b'
|
|
476
530
|
- language: Linear Programming
|
|
477
531
|
pattern: '(?i)^\s*(?:minimize|minimum|min|maximize|maximum|max)(?:\s+multi-objectives)?\s*$'
|
|
478
532
|
- language: Answer Set Programming
|
|
@@ -572,6 +626,8 @@ disambiguations:
|
|
|
572
626
|
and:
|
|
573
627
|
- negative_pattern: '/\*'
|
|
574
628
|
- pattern: '^\s*\.(?:include\s|globa?l\s|[A-Za-z][_A-Za-z0-9]*:)'
|
|
629
|
+
- language: MiniScript
|
|
630
|
+
pattern: '^\s*\bend (?:function|while|if|for)\b|\s\b(?:isa)\b\s'
|
|
575
631
|
- language: MAXScript
|
|
576
632
|
- extensions: ['.msg']
|
|
577
633
|
rules:
|
|
@@ -637,6 +693,15 @@ disambiguations:
|
|
|
637
693
|
pattern:
|
|
638
694
|
- '(?i)\bDEFINE\s+(?:VARIABLE|TEMP-TABLE|BUFFER|QUERY|INPUT\s+PARAMETER|OUTPUT\s+PARAMETER)\b'
|
|
639
695
|
- '(?i)\bEND(?:\s+(?:PROCEDURE|FUNCTION|DO|FOR\s+EACH))?\.'
|
|
696
|
+
- extensions: ['.pc']
|
|
697
|
+
rules:
|
|
698
|
+
- language: Pro*C
|
|
699
|
+
pattern: '^\s*EXEC\s+SQL\s'
|
|
700
|
+
- language: pkg-config
|
|
701
|
+
and:
|
|
702
|
+
- pattern: '^Name:[ \t]+\S'
|
|
703
|
+
- pattern: '^Description:[ \t]+\S'
|
|
704
|
+
- pattern: '^Version:[ \t]+\S'
|
|
640
705
|
- extensions: ['.php']
|
|
641
706
|
rules:
|
|
642
707
|
- language: Hack
|
|
@@ -749,6 +814,11 @@ disambiguations:
|
|
|
749
814
|
pattern:
|
|
750
815
|
- '^\s*#(?:(?:if|ifdef|define|pragma)\s+\w|\s*include\s+<[^>]+>)'
|
|
751
816
|
- '^\s*template\s*<'
|
|
817
|
+
- extensions: ['.releaserc']
|
|
818
|
+
rules:
|
|
819
|
+
- language: YAML
|
|
820
|
+
named_pattern: yaml
|
|
821
|
+
- language: JSON
|
|
752
822
|
- extensions: ['.res']
|
|
753
823
|
rules:
|
|
754
824
|
- language: ReScript
|
|
@@ -819,6 +889,15 @@ disambiguations:
|
|
|
819
889
|
- '\(#[\w-]+[!\?]'
|
|
820
890
|
- '(?:[\)\]]\s*[\*\+\?](?:\s|$))'
|
|
821
891
|
- '@[\w.-]+(?:\)\s|$)'
|
|
892
|
+
- extensions: ['.sd']
|
|
893
|
+
rules:
|
|
894
|
+
- language: Vespa Schema Definition
|
|
895
|
+
pattern: '^[ \t]*(?:schema|search|document)[ \t]+[\w.\/-]+[ \t]*(?:inherits[ \t][^{\n]*)?\{'
|
|
896
|
+
- extensions: ['.sip']
|
|
897
|
+
rules:
|
|
898
|
+
- language: Quartus Simulation IP
|
|
899
|
+
pattern: '^[ \t]*set_global_assignment\b'
|
|
900
|
+
- language: SIP
|
|
822
901
|
- extensions: ['.sol']
|
|
823
902
|
rules:
|
|
824
903
|
- language: Solidity
|
|
@@ -829,7 +908,7 @@ disambiguations:
|
|
|
829
908
|
rules:
|
|
830
909
|
# Postgres
|
|
831
910
|
- language: PLpgSQL
|
|
832
|
-
pattern: '(?i:^\\i\b
|
|
911
|
+
pattern: '(?i:^\\i\b|^\s*DO\s+\$|LANGUAGE\s+''?plpgsql''?|BEGIN(\s+WORK)?\s*;)'
|
|
833
912
|
# IBM db2
|
|
834
913
|
- language: SQLPL
|
|
835
914
|
pattern: '(?i:ALTER\s+MODULE|MODE\s+DB2SQL|\bSYS(CAT|PROC)\.|ASSOCIATE\s+RESULT\s+SET|\bEND!\s*$)'
|
|
@@ -1002,6 +1081,11 @@ disambiguations:
|
|
|
1002
1081
|
- language: Typst
|
|
1003
1082
|
pattern: '^#(import|show|let|set)'
|
|
1004
1083
|
- language: XML
|
|
1084
|
+
- extensions: ['.uc']
|
|
1085
|
+
rules:
|
|
1086
|
+
- language: ucode
|
|
1087
|
+
named_pattern: ucode
|
|
1088
|
+
- language: UnrealScript
|
|
1005
1089
|
- extensions: ['.url']
|
|
1006
1090
|
rules:
|
|
1007
1091
|
- language: INI
|
|
@@ -1016,7 +1100,7 @@ disambiguations:
|
|
|
1016
1100
|
pattern: '\$(?:if|else)[ \t]|^[ \t]*fn\s+[^\s()]+\(.*?\).*?\{|^[ \t]*for\s*\{'
|
|
1017
1101
|
- extensions: ['.vba']
|
|
1018
1102
|
rules:
|
|
1019
|
-
- language: Vim
|
|
1103
|
+
- language: Vim script
|
|
1020
1104
|
pattern: '^UseVimball'
|
|
1021
1105
|
- language: VBA
|
|
1022
1106
|
- extensions: ['.vcf']
|
|
@@ -1120,6 +1204,13 @@ named_patterns:
|
|
|
1120
1204
|
- '(?i)^[ ]*\$(CONSOLE|CHECKING):'
|
|
1121
1205
|
- '(?i)^[ ]*\$(FULLSCREEN|RESIZE|STATIC|DYNAMIC|NOPREFIX|SCREENSHOW|SCREENHIDE|EXEICON)\b'
|
|
1122
1206
|
raku: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'
|
|
1207
|
+
ucode:
|
|
1208
|
+
- '^#!.*\bucode\b'
|
|
1209
|
+
- '^\s*[''"]use strict[''"];'
|
|
1210
|
+
- '^[ \t]*(?:export|import)\b'
|
|
1211
|
+
- '\b(?:require|include)\s*\(\s*[''"]'
|
|
1212
|
+
- '^\s*let\s+\w+'
|
|
1213
|
+
- '\b(?:printf|sprintf)\s*\('
|
|
1123
1214
|
vb-class: '^[ ]*VERSION [0-9]\.[0-9] CLASS'
|
|
1124
1215
|
vb-form: '^[ ]*VERSION [0-9]\.[0-9]{2}'
|
|
1125
1216
|
vb-module: '^[ ]*Attribute VB_Name = '
|
|
@@ -1139,3 +1230,4 @@ named_patterns:
|
|
|
1139
1230
|
# Excel objects
|
|
1140
1231
|
- '\b(?:(?:This|Active)?Workbooks?|Worksheets?|Active(?:Sheet|Chart|Cell)|WorksheetFunction)\b'
|
|
1141
1232
|
- '\b(?:Range\(".*|Cells\([0-9a-zA-Z_]*, (?:[0-9a-zA-Z_]*|"[a-zA-Z]{1,3}"))\)'
|
|
1233
|
+
yaml: '^[ \t]*(?:#|(?:[^/"\s:{}\[\]]|\/[^/*:\n])[^:\n]*:)'
|
data/lib/linguist/language.rb
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
require 'cgi'
|
|
2
2
|
require 'yaml'
|
|
3
|
-
begin
|
|
4
|
-
require 'yajl'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
require 'json'
|
|
7
|
-
end
|
|
8
3
|
|
|
9
4
|
require 'linguist/classifier'
|
|
10
5
|
require 'linguist/heuristics'
|
|
@@ -60,6 +55,14 @@ module Linguist
|
|
|
60
55
|
# Language name index
|
|
61
56
|
@index[language.name.downcase] = @name_index[language.name.downcase] = language
|
|
62
57
|
|
|
58
|
+
# Index filesystem name if defined
|
|
59
|
+
if language.fs_name
|
|
60
|
+
if @name_index.key?(language.fs_name)
|
|
61
|
+
raise ArgumentError "Duplicate language name: #{language.fs_name}"
|
|
62
|
+
end
|
|
63
|
+
@index[language.fs_name.downcase] = @name_index[language.fs_name.downcase] = language
|
|
64
|
+
end
|
|
65
|
+
|
|
63
66
|
language.aliases.each do |name|
|
|
64
67
|
# All Language aliases should be unique. Raise if there is a duplicate.
|
|
65
68
|
if @alias_index.key?(name)
|
|
@@ -493,11 +496,12 @@ module Linguist
|
|
|
493
496
|
popular = YAML.load_file(File.expand_path("../popular.yml", __FILE__))
|
|
494
497
|
|
|
495
498
|
languages_yml = File.expand_path("../languages.yml", __FILE__)
|
|
496
|
-
|
|
499
|
+
languages_rb = File.expand_path("../languages_data.rb", __FILE__)
|
|
497
500
|
|
|
498
|
-
if File.exist?(
|
|
499
|
-
|
|
500
|
-
|
|
501
|
+
if File.exist?(languages_rb)
|
|
502
|
+
mod = Module.new
|
|
503
|
+
load(languages_rb, mod)
|
|
504
|
+
languages = mod::DATA
|
|
501
505
|
else
|
|
502
506
|
languages = YAML.load_file(languages_yml)
|
|
503
507
|
end
|