mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Heuristic rules to distinguish .sc files between SuperCollider and Scala
This commit is contained in:
@@ -25,6 +25,9 @@ module Linguist
|
|||||||
if languages.all? { |l| ["Common Lisp", "OpenCL"].include?(l) }
|
if languages.all? { |l| ["Common Lisp", "OpenCL"].include?(l) }
|
||||||
result = disambiguate_cl(data, languages)
|
result = disambiguate_cl(data, languages)
|
||||||
end
|
end
|
||||||
|
if languages.all? { |l| ["Scala", "SuperCollider"].include?(l) }
|
||||||
|
result = disambiguate_sc(data, languages)
|
||||||
|
end
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -88,6 +91,17 @@ module Linguist
|
|||||||
matches
|
matches
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.disambiguate_sc(data, languages)
|
||||||
|
matches = []
|
||||||
|
if (/\^(this|super)\./.match(data) or /^\s*(\+|\*)\s*\w+\s*{/.match(data) or /^\s*~\w+\s*=\./.match(data))
|
||||||
|
matches << Language["SuperCollider"]
|
||||||
|
end
|
||||||
|
if (/^\s*import (scala|java)\./.match(data) or /^\s*val\s+\w+\s*=/.match(data) or /^\s*class\b/.match(data))
|
||||||
|
matches << Language["Scala"]
|
||||||
|
end
|
||||||
|
matches
|
||||||
|
end
|
||||||
|
|
||||||
def self.active?
|
def self.active?
|
||||||
!!ACTIVE
|
!!ACTIVE
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -98,4 +98,16 @@ class TestHeuristcs < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_sc_supercollider_by_heuristics
|
||||||
|
languages = ["Scala", "SuperCollider"]
|
||||||
|
results = Heuristics.disambiguate_sc(fixture("SuperCollider/WarpPreset.sc"), languages)
|
||||||
|
assert_equal Language["SuperCollider"], results.first
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_sc_scala_by_heuristics
|
||||||
|
languages = ["Scala", "SuperCollider"]
|
||||||
|
results = Heuristics.disambiguate_sc(fixture("Scala/node11.sc"), languages)
|
||||||
|
assert_equal Language["Scala"], results.first
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user