{"record":{"id":"7a8e24a156237a9b","repo":"rouge-ruby/rouge","slug":"bad-guesser-g","errorCode":null,"errorMessage":"bad guesser: #{g}","messagePattern":"bad guesser: #(.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"lib/rouge/guesser.rb","lineNumber":21,"sourceCode":"module Rouge\n  class Guesser\n    class Ambiguous < StandardError\n      attr_reader :alternatives\n      def initialize(alternatives); @alternatives = alternatives; end\n\n      def message\n        \"Ambiguous guess: can't decide between #{alternatives.map(&:tag).inspect}\"\n      end\n    end\n\n    def self.guess(guessers, lexers)\n      original_size = lexers.size\n\n      guessers.each do |g|\n        new_lexers = case g\n        when Guesser then g.filter(lexers)\n        when proc { |x| x.respond_to? :call } then g.call(lexers)\n        else raise \"bad guesser: #{g}\"\n        end\n\n        lexers = new_lexers && new_lexers.any? ? new_lexers : lexers\n      end\n\n      # if we haven't filtered the input at *all*,\n      # then we have no idea what language it is,\n      # so we bail and return [].\n      lexers.size < original_size ? lexers : []\n    end\n\n    def collect_best(lexers, opts={}, &scorer)\n      best = []\n      best_score = opts[:threshold]\n\n      lexers.each do |lexer|\n        score = yield(lexer)\n","sourceCodeStart":3,"sourceCodeEnd":39,"githubUrl":"https://github.com/rouge-ruby/rouge/blob/bd7dad7b0939c556e582a0370686f6fc022c8af5/lib/rouge/guesser.rb#L3-L39","documentation":"Error \"bad guesser: #{g}\" thrown in rouge-ruby/rouge.","triggerScenarios":"Thrown at lib/rouge/guesser.rb:21 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bd7dad7b0939c556e582a0370686f6fc022c8af5","analyzedAt":"2026-08-23T11:34:50.713Z","schemaVersion":2},"datasetVersion":"2026-08-23T16:17:53.355Z"}