diff --git a/lib/linguist/heuristics.rb b/lib/linguist/heuristics.rb index c1116780..fa5a97d7 100644 --- a/lib/linguist/heuristics.rb +++ b/lib/linguist/heuristics.rb @@ -1,7 +1,7 @@ module Linguist # A collection of simple heuristics that can be used to better analyze languages. class Heuristics - ACTIVE = false + ACTIVE = true # Public: Given an array of String language names, # apply heuristics against the given data and return an array @@ -12,26 +12,28 @@ module Linguist # # Returns an array of Languages or [] def self.find_by_heuristics(data, languages) + determined = nil 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) } + determined = disambiguate_c(data, languages) end if languages.all? { |l| ["Perl", "Prolog"].include?(l) } - disambiguate_pl(data, languages) + determined = disambiguate_pl(data, languages) end if languages.all? { |l| ["ECL", "Prolog"].include?(l) } - disambiguate_ecl(data, languages) + determined = disambiguate_ecl(data, languages) end if languages.all? { |l| ["TypeScript", "XML"].include?(l) } - disambiguate_ts(data, languages) + determined = disambiguate_ts(data, languages) end if languages.all? { |l| ["Common Lisp", "OpenCL"].include?(l) } - disambiguate_cl(data, languages) + determined = disambiguate_cl(data, languages) end if languages.all? { |l| ["Rebol", "R"].include?(l) } - disambiguate_r(data, languages) + determined = disambiguate_r(data, languages) end end + determined end # .h extensions are ambigious between C, C++, and Objective-C.