diff --git a/lib/linguist/heuristics.rb b/lib/linguist/heuristics.rb index c7519881..8585dbfe 100644 --- a/lib/linguist/heuristics.rb +++ b/lib/linguist/heuristics.rb @@ -34,6 +34,9 @@ module Linguist if languages.all? { |l| ["AsciiDoc", "AGS Script"].include?(l) } result = disambiguate_asc(data, languages) end + if languages.all? { |l| ["XML", "Objective-C++"].include?(l) } + result = disambiguate_mm(data, languages) + end return result end end @@ -124,6 +127,16 @@ module Linguist matches end + def self.disambiguate_mm(data, languages) + matches = [] + if //.match(data) + matches << Language["XML"] + else + matches << Language["Objective-C++"] + end + matches + end + def self.active? !!ACTIVE end diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index fc00dfbf..99584772 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -2771,6 +2771,7 @@ XML: - .jelly - .kml - .launch + - .mm - .mxml - .nproj - .nuspec diff --git a/samples/XML/some-ideas.mm b/samples/XML/some-ideas.mm new file mode 100644 index 00000000..070e87e4 --- /dev/null +++ b/samples/XML/some-ideas.mm @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/test_heuristics.rb b/test/test_heuristics.rb index e75fb470..7f9fc585 100644 --- a/test/test_heuristics.rb +++ b/test/test_heuristics.rb @@ -122,4 +122,16 @@ class TestHeuristcs < Test::Unit::TestCase results = Heuristics.disambiguate_sc(fixture("Scala/node11.sc"), languages) assert_equal Language["Scala"], results.first end + + def test_mm_objective_cpp_by_heuristics + languages = ["XML", "Objective-C++"] + results = Heuristics.disambiguate_mm(fixture("Objective-C++/objsql.mm"), languages) + assert_equal Language["Objective-C++"], results.first + end + + def test_mm_xml_by_heuristics + languages = ["XML", "Objective-C++"] + results = Heuristics.disambiguate_mm(fixture("XML/some-ideas.mm"), languages) + assert_equal Language["XML"], results.first + end end