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



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