lib/phonetic/dm_soundex.rb in phonetic-1.1.0 vs lib/phonetic/dm_soundex.rb in phonetic-1.2.0

- old
+ new

@@ -1,7 +1,8 @@ require 'phonetic/algorithm' -require 'phonetic/dm_soundex_map' +require 'phonetic/dm_soundex/map' +require 'phonetic/dm_soundex/code' module Phonetic # Daitch–Mokotoff Soundex (D–M Soundex) is a phonetic algorithm invented # in 1985 by Jewish genealogists Gary Mokotoff and Randy Daitch. # @@ -17,11 +18,11 @@ # Encode word to its D-M Soundex codes. def self.encode_word(word, options = {}) w = word.strip.upcase.gsub(/[^A-Z]+/, '') i = 0 - code = init_code() + code = Code.new while i < w.size if w[i] != w[i + 1] c = find_code(MAP, w, i) if c len = c[3] + 1 @@ -35,31 +36,13 @@ i += c[3] end end i += 1 end - code.result + code.results end private - - def self.init_code - code = [[]] - def code.add(a) - case a - when Array - c = self.map{|w| w.last != a[1] ? w + [a[1]] : w} - self.map!{|w| w.last != a[0] ? w + [a[0]] : w} - self.push(*c) - else - self.map!{|w| w.last != a ? w + [a] : w} - end - end - def code.result - self.map{|w| w.join[0..5].ljust(6, '0')}.uniq - end - code - end def self.find_code(map, w, i, last = nil, count = 0) elem = map[w[i]] r = case elem when Array