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
105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/guessmethod.rb', line 105 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 |