diff --git a/lib/linguist/heuristics.rb b/lib/linguist/heuristics.rb index c7f31a42..e6d17686 100644 --- a/lib/linguist/heuristics.rb +++ b/lib/linguist/heuristics.rb @@ -12,23 +12,25 @@ module Linguist # # Returns an array of Languages or [] def self.find_by_heuristics(data, languages) + matches = [] if active? - if languages.all? { |l| ["Objective-C", "C++"].include?(l) } - disambiguate_c(data, languages) + if languages.all? { |l| ["Objective-C", "C++", "C"].include?(l) } + matches = disambiguate_c(data, languages) end if languages.all? { |l| ["Perl", "Prolog"].include?(l) } - disambiguate_pl(data, languages) + matches = disambiguate_pl(data, languages) end if languages.all? { |l| ["ECL", "Prolog"].include?(l) } - disambiguate_ecl(data, languages) + matches = disambiguate_ecl(data, languages) end if languages.all? { |l| ["TypeScript", "XML"].include?(l) } - disambiguate_ts(data, languages) + matches = disambiguate_ts(data, languages) end if languages.all? { |l| ["Common Lisp", "OpenCL"].include?(l) } - disambiguate_cl(data, languages) + matches = disambiguate_cl(data, languages) end end + matches end # .h extensions are ambigious between C, C++, and Objective-C.