classify

in lib/linguist/classifier.rb [77:96]


    def classify(tokens, languages)
      return [] if tokens.nil?
      tokens = Tokenizer.tokenize(tokens) if tokens.is_a?(String)

      scores = {}
      if verbosity >= 2
        dump_all_tokens(tokens, languages)
      end
      languages.each do |language|
        scores[language] = tokens_probability(tokens, language) +
                                   language_probability(language)
        if verbosity >= 1
          printf "%10s = %10.3f + %7.3f = %10.3f\n",
            language, tokens_probability(tokens, language), language_probability(language), scores[language]
        end
      end

      scores.sort { |a, b| b[1] <=> a[1] }.map { |score| [score[0], score[1]] }
    end