Class: GuessMethod::GuessMethodGuesser
Overview
GuessMethodGuesser uses map, min, and levensthtein to find the closest match(es) in an array of strings
Class Method Summary collapse
Class Method Details
.find_closest(haystack, needle) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/guessmethod.rb', line 96 def self.find_closest(haystack, needle) closest_distance = haystack.map {|x| x.to_s.downcase.levenshtein(needle.to_s.downcase, GuessMethodOptions[:insert_weight], GuessMethodOptions[:delete_weight], GuessMethodOptions[:substitution_weight])}.min || 0 if closest_distance <= GuessMethodOptions[:threshold] haystack.find_all {|x| x.to_s.downcase.levenshtein(needle.to_s.downcase, GuessMethodOptions[:insert_weight], GuessMethodOptions[:delete_weight], GuessMethodOptions[:substitution_weight]) == closest_distance} else [] end end |