Class: GuessMethod::GuessMethodGuesser

Inherits:
Object
  • Object
show all
Defined in:
lib/guessmethod.rb

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