From 32de8a4d197ffc5dbb9099471f10b530b531a234 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Thu, 23 Oct 2014 13:59:36 +0100 Subject: [PATCH] Only exact matches --- lib/linguist/heuristics.rb | 2 +- test/test_heuristics.rb | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/linguist/heuristics.rb b/lib/linguist/heuristics.rb index 16eaf5e7..fa49a55b 100644 --- a/lib/linguist/heuristics.rb +++ b/lib/linguist/heuristics.rb @@ -38,7 +38,7 @@ module Linguist # Returns an array of Languages or [] def self.disambiguate_c(data, languages) matches = [] - if (/@(interface|class|protocol|property|end|synchronised|selector|implementation)/.match(data)) + if (/@\b(interface|class|protocol|property|end|synchronised|selector|implementation)\b/.match(data)) matches << Language["Objective-C"] end if (/^\s*#\s*include <(cstdint|string|vector|map|list|array|bitset|queue|stack|forward_list|unordered_map|unordered_set|(i|o|io)stream)>/.match(data) or diff --git a/test/test_heuristics.rb b/test/test_heuristics.rb index 9694d25a..7057f477 100644 --- a/test/test_heuristics.rb +++ b/test/test_heuristics.rb @@ -25,7 +25,7 @@ class TestHeuristcs < Test::Unit::TestCase # Only calling out '.h' filenames as these are the ones causing issues all_fixtures("Objective-C", "*.h").each do |fixture| results = Heuristics.disambiguate_c(fixture("Objective-C/#{File.basename(fixture)}"), languages) - assert_equal Language["Objective-C"], results.first + assert_equal Language["Objective-C"], results.first, "Failed for #{File.basename(fixture)}" end end @@ -49,25 +49,25 @@ class TestHeuristcs < Test::Unit::TestCase match = Language.detect(blob) assert_equal Language["Objective-C"], match end - + def test_pl_prolog_by_heuristics languages = ["Perl", "Prolog"] results = Heuristics.disambiguate_pl(fixture("Prolog/turing.pl"), languages) assert_equal Language["Prolog"], results.first end - + def test_pl_perl_by_heuristics languages = ["Perl", "Prolog"] results = Heuristics.disambiguate_pl(fixture("Perl/perl-test.t"), languages) assert_equal Language["Perl"], results.first end - + def test_ecl_prolog_by_heuristics languages = ["ECL", "Prolog"] results = Heuristics.disambiguate_ecl(fixture("Prolog/or-constraint.ecl"), languages) assert_equal Language["Prolog"], results.first end - + def test_ecl_ecl_by_heuristics languages = ["ECL", "Prolog"] results = Heuristics.disambiguate_ecl(fixture("ECL/sample.ecl"), languages)