Module: Text::Soundex

Defined in:
lib/carat/soundex.rb

Class Method Summary collapse

Class Method Details

.get_code(char) ⇒ Object



71
72
73
# File 'lib/carat/soundex.rb', line 71

def get_code(char)
  char.tr! "AEIOUYWHBPFVCSKGJQXZDTLMNR", "00000000111122222222334556"
end

.soundex(str_or_arr) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/carat/soundex.rb', line 27

def soundex(str_or_arr)
  case str_or_arr
  when String
    soundex_str(str_or_arr)
  when Array
    str_or_arr.collect{|ele| soundex_str(ele)}
  else
    nil
  end
end

.soundex_str(str) ⇒ Object

returns nil if the value couldn’t be calculated (empty-string, wrong-character) do not change the parameter “str”



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/carat/soundex.rb', line 45

def soundex_str(str)
  return nil if str.empty?
  
  str = str.upcase
  last_code = get_code(str[0,1])
  soundex_code = str[0,1]
  
  for index in 1...(str.size) do
    return soundex_code if soundex_code.size == 4
  
    code = get_code(str[index,1])
    
    if code == "0" then
      last_code = nil
    elsif code == nil then
      return nil
    elsif code != last_code then
      soundex_code += code
      last_code = code        
    end 
  end # for
  
  return soundex_code + "000"[0,4-soundex_code.size]
end