Heuristics for Common Lisp and NewLisp

This commit is contained in:
Paul Chaignon
2014-04-28 11:45:24 +02:00
parent e1064b13c0
commit e4975fc476
2 changed files with 22 additions and 0 deletions

View File

@@ -25,6 +25,9 @@ module Linguist
if languages.all? { |l| ["TypeScript", "XML"].include?(l) }
disambiguate_ts(data, languages)
end
if languages.all? { |l| ["Common Lisp", "NewLisp"].include?(l) }
disambiguate_lsp(data, languages)
end
if languages.all? { |l| ["Common Lisp", "OpenCL"].include?(l) }
disambiguate_cl(data, languages)
end
@@ -69,6 +72,13 @@ module Linguist
matches
end
def self.disambiguate_lsp(data, languages)
matches = []
matches << Language["Common Lisp"] if data.include?("(defun")
matches << Language["NewLisp"] if data.include?("true")
matches
end
def self.disambiguate_cl(data, languages)
matches = []
matches << Language["Common Lisp"] if data.include?("(defun ")

View File

@@ -75,6 +75,18 @@ class TestHeuristcs < Test::Unit::TestCase
assert_equal Language["XML"], results.first
end
def test_lsp_commonlisp_by_heuristics
languages = ["Common Lisp", "NewLisp"]
results = Heuristics.disambiguate_lsp(fixture("Common Lisp/sample.lsp"), languages)
assert_equal Language["Common Lisp"], results.first
end
def test_lsp_newlisp_by_heuristics
languages = ["Common Lisp", "NewLisp"]
results = Heuristics.disambiguate_lsp(fixture("NewLisp/irc.lsp"), languages)
assert_equal Language["NewLisp"], results.first
end
def test_cl_by_heuristics
languages = ["Common Lisp", "OpenCL"]
languages.each do |language|