diff options
| author | Ben Sanders <ben@sanders.life> | 2026-08-02 09:49:25 -0400 |
|---|---|---|
| committer | Ben Sanders <ben@sanders.life> | 2026-08-02 09:49:25 -0400 |
| commit | b41479c91e6685511c1f8ba8586106b322073b62 (patch) | |
| tree | c9f1345999d754ae0a533849966427e792d9e68d /vendor/bundle/ruby/3.4.0/gems/rouge-4.7.0/lib/rouge/guesser.rb | |
| parent | cfaceeb9a6d1295f5754be211858155cd309acc2 (diff) | |
added statscounter code
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/rouge-4.7.0/lib/rouge/guesser.rb')
| -rw-r--r-- | vendor/bundle/ruby/3.4.0/gems/rouge-4.7.0/lib/rouge/guesser.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/rouge-4.7.0/lib/rouge/guesser.rb b/vendor/bundle/ruby/3.4.0/gems/rouge-4.7.0/lib/rouge/guesser.rb new file mode 100644 index 0000000..7cfc3e6 --- /dev/null +++ b/vendor/bundle/ruby/3.4.0/gems/rouge-4.7.0/lib/rouge/guesser.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +module Rouge + class Guesser + class Ambiguous < StandardError + attr_reader :alternatives + def initialize(alternatives); @alternatives = alternatives; end + + def message + "Ambiguous guess: can't decide between #{alternatives.map(&:tag).inspect}" + end + end + + def self.guess(guessers, lexers) + original_size = lexers.size + + guessers.each do |g| + new_lexers = case g + when Guesser then g.filter(lexers) + when proc { |x| x.respond_to? :call } then g.call(lexers) + else raise "bad guesser: #{g}" + end + + lexers = new_lexers && new_lexers.any? ? new_lexers : lexers + end + + # if we haven't filtered the input at *all*, + # then we have no idea what language it is, + # so we bail and return []. + lexers.size < original_size ? lexers : [] + end + + def collect_best(lexers, opts={}, &scorer) + best = [] + best_score = opts[:threshold] + + lexers.each do |lexer| + score = scorer.call(lexer) + + next if score.nil? + + if best_score.nil? || score > best_score + best_score = score + best = [lexer] + elsif score == best_score + best << lexer + end + end + + best + end + + def filter(lexers) + raise 'abstract' + end + end +end |
