Sha256: 181af6c05ea98d83437d6e7ee4f3a0573c86a7ea57b9b745531b5fcd4c0ba13f

Contents?: true

Size: 1.02 KB

Versions: 19

Compression:

Stored size: 1.02 KB

Contents

module Rouge
  module Guessers
    class Source < Guesser
      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

        # If we're filtering against *all* lexers, we only use confident return
        # values from analyze_text.  But if we've filtered down already, we can trust
        # the analysis more.
        threshold = lexers.size < 10 ? 0 : 0.5

        source_text = case @source
        when String
          @source
        when ->(s){ s.respond_to? :read }
          @source.read
        else
          raise 'invalid source'
        end

        Lexer.assert_utf8!(source_text)

        source_text = TextAnalyzer.new(source_text)

        collect_best(lexers, threshold: threshold) do |lexer|
          next unless lexer.methods(false).include? :analyze_text
          lexer.analyze_text(source_text)
        end
      end
    end
  end
end

Version data entries

19 entries across 17 versions & 5 rubygems

Version Path
files.com-1.0.55 docs/vendor/bundle/ruby/2.5.0/gems/rouge-2.2.1/lib/rouge/guessers/source.rb
rouge_ecl-1.0.0 lib/rouge/guessers/source.rb
rouge-2.2.1 lib/rouge/guessers/source.rb
rouge-2.2.0 lib/rouge/guessers/source.rb
rougegal-2.1.2 lib/rouge/guessers/source.rb
tdiary-5.0.5 vendor/bundle/gems/tdiary-5.0.4/vendor/bundle/gems/rouge-2.0.7/lib/rouge/guessers/source.rb
tdiary-5.0.5 vendor/bundle/gems/rouge-2.1.1/lib/rouge/guessers/source.rb
tdiary-5.0.5 vendor/bundle/gems/rouge-2.0.7/lib/rouge/guessers/source.rb
rouge-2.1.1 lib/rouge/guessers/source.rb
rouge-2.1.0 lib/rouge/guessers/source.rb
tdiary-5.0.4 vendor/bundle/gems/rouge-2.0.7/lib/rouge/guessers/source.rb
rouge-2.0.7 lib/rouge/guessers/source.rb
rouge-2.0.6 lib/rouge/guessers/source.rb
rouge-2.0.5 lib/rouge/guessers/source.rb
rouge-2.0.3 lib/rouge/guessers/source.rb
rouge-2.0.2 lib/rouge/guessers/source.rb
rouge-2.0.1 lib/rouge/guessers/source.rb
rouge-2.0.0 lib/rouge/guessers/source.rb
rouge-1.11.1 lib/rouge/guessers/source.rb