1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
# frozen_string_literal: true
module Rouge
module Guessers
class Source < Guesser
include Util
attr_reader :source
def initialize(source)
@source = source
end
def filter(lexers)
# don't bother reading the input if
# we've already filtered to 1
return lexers if lexers.size == 1
source_text = get_source(@source)
Lexer.assert_utf8!(source_text)
source_text = TextAnalyzer.new(source_text)
collect_best(lexers) do |lexer|
next unless lexer.detectable?
lexer.detect?(source_text) ? 1 : nil
end
end
end
end
end
|