Class: Picky::Generators::Similarity::Phonetic

Inherits:
Picky::Generators::Strategy show all
Defined in:
lib/picky/generators/similarity/phonetic.rb

Overview

It's actually a combination of double metaphone and Levenshtein.

It uses the double metaphone to get similar words and ranks them using the levenshtein.

Direct Known Subclasses

DoubleMetaphone, Metaphone, Soundex

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Picky::Generators::Strategy

#saved?, #to_s

Constructor Details

#initialize(amount = 3) ⇒ Phonetic

Returns a new instance of Phonetic.



21
22
23
24
# File 'lib/picky/generators/similarity/phonetic.rb', line 21

def initialize amount = 3
  check_gem
  @amount = amount
end

Instance Attribute Details

#amountObject (readonly)

Returns the value of attribute amount.



17
18
19
# File 'lib/picky/generators/similarity/phonetic.rb', line 17

def amount
  @amount
end

Instance Method Details

#check_gemObject

Tries to require the text gem.



28
29
30
31
32
33
# File 'lib/picky/generators/similarity/phonetic.rb', line 28

def check_gem
  require 'text'
rescue LoadError
  warn_gem_missing 'text', 'a phonetic Similarity'
  exit 1
end

#prioritize(ary, code) ⇒ Object

Sorts the index values in place.



37
38
39
40
# File 'lib/picky/generators/similarity/phonetic.rb', line 37

def prioritize ary, code
  ary.sort_by_levenshtein! code
  ary.slice! amount, ary.size # Note: The ary.size is not perfectly correct.
end