class Rouge::Guesser
Public Class Methods
guess(guessers, lexers)
click to toggle source
# File lib/rouge/guesser.rb, line 14 def self.guess(guessers, lexers) original_size = lexers.size guessers.each do |g| new_lexers = case g when Guesser then g.filter(lexers) when proc { |x| x.respond_to? :call } then g.call(lexers) else raise "bad guesser: #{g}" end lexers = new_lexers && new_lexers.any? ? new_lexers : lexers end # if we haven't filtered the input at *all*, # then we have no idea what language it is, # so we bail and return []. lexers.size < original_size ? lexers : [] end
Public Instance Methods
collect_best(lexers, opts={}, &scorer)
click to toggle source
# File lib/rouge/guesser.rb, line 33 def collect_best(lexers, opts={}, &scorer) best = [] best_score = opts[:threshold] lexers.each do |lexer| score = scorer.call(lexer) next if score.nil? if best_score.nil? || score > best_score best_score = score best = [lexer] elsif score == best_score best << lexer end end best end
filter(lexers)
click to toggle source
# File lib/rouge/guesser.rb, line 53 def filter(lexers) raise 'abstract' end