From e4975fc47601b1f7eb6c0f25cd7a94d439ef105f Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Mon, 28 Apr 2014 11:45:24 +0200 Subject: [PATCH] Heuristics for Common Lisp and NewLisp --- lib/linguist/heuristics.rb | 10 ++++++++++ test/test_heuristics.rb | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/lib/linguist/heuristics.rb b/lib/linguist/heuristics.rb index c1116780..c37a17ed 100644 --- a/lib/linguist/heuristics.rb +++ b/lib/linguist/heuristics.rb @@ -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 ") diff --git a/test/test_heuristics.rb b/test/test_heuristics.rb index 0c1a07ff..2e1ee9bc 100644 --- a/test/test_heuristics.rb +++ b/test/test_heuristics.rb @@ -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|