# File lib/rouge/guessers/modeline.rb, line 24 def filter(lexers) # don't bother reading the stream if we've already decided return lexers if lexers.size == 1 source_text = @source source_text = source_text.read if source_text.respond_to? :read lines = source_text.split(/\r?\n/) search_space = (lines.first(@lines) + lines.last(@lines)).join("\n") matches = MODELINES.map { |re| re.match(search_space) }.compact match_set = Set.new(matches.map { |m| m[1] }) lexers.select { |l| (Set.new([l.tag] + l.aliases) & match_set).any? } end