Module: Text::Metaphone
- Extended by:
- Metaphone
- Included in:
- Metaphone
- Defined in:
- lib/text/metaphone.rb,
lib/text/double_metaphone.rb
Overview
:nodoc:
Defined Under Namespace
Modules: Rules
Instance Method Summary collapse
-
#double_metaphone(str) ⇒ Object
Returns the primary and secondary double metaphone tokens (the secondary will be nil if equal to the primary).
-
#metaphone(str, options = {}) ⇒ Object
Returns the Metaphone representation of a string.
Instance Method Details
#double_metaphone(str) ⇒ Object
Returns the primary and secondary double metaphone tokens (the secondary will be nil if equal to the primary).
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/text/double_metaphone.rb', line 16 def (str) primary, secondary, current = [], [], 0 original, length, last = "#{str} ".upcase, str.length, str.length - 1 if /^GN|KN|PN|WR|PS$/ =~ original[0, 2] current += 1 end if 'X' == original[0, 1] primary << :S secondary << :S current += 1 end while primary.length < 4 || secondary.length < 4 break if current > str.length a, b, c = (original, current, length, last) primary << a if a secondary << b if b current += c if c end primary, secondary = primary.join("")[0, 4], secondary.join("")[0, 4] return primary, (primary == secondary ? nil : secondary) end |
#metaphone(str, options = {}) ⇒ Object
Returns the Metaphone representation of a string. If the string contains multiple words, each word in turn is converted into its Metaphone representation. Note that only the letters A-Z are supported, so any language-specific processing should be done beforehand.
If the :buggy option is set, alternate ‘buggy’ rules are used.
79 80 81 |
# File 'lib/text/metaphone.rb', line 79 def (str, ={}) return str.strip.split(/\s+/).map { |w| (w, ) }.join(' ') end |