module RussianMetaphone::Filter::BreathConsonants
Оглушение согласных в слабой позиции
Constants
- REZONANTS
- VOICED
- VOICED_VS_VOICELESS
- VOICELESS
Public Class Methods
filter(string, options = {})
click to toggle source
# File lib/russian_metaphone/filter/breath_consonants.rb, line 12 def filter(string, options = {}) options[:skip_if_before_rezonant] = false if !options.has_key?(:skip_if_before_rezonant) previous_char = nil string.each_char.each_with_index do |current_char, ind| if VOICED.include?(previous_char) && ( VOICELESS.include?(current_char) || (!options[:skip_if_before_rezonant] && REZONANTS.include?(current_char)) ) string[ind-1] = VOICED_VS_VOICELESS[previous_char] end previous_char = current_char end # Звонкие согласные превращаются в глухие в конце слова string[string.length-1] = VOICED_VS_VOICELESS[previous_char] if VOICED.include?(previous_char) string end
Private Instance Methods
filter(string, options = {})
click to toggle source
# File lib/russian_metaphone/filter/breath_consonants.rb, line 12 def filter(string, options = {}) options[:skip_if_before_rezonant] = false if !options.has_key?(:skip_if_before_rezonant) previous_char = nil string.each_char.each_with_index do |current_char, ind| if VOICED.include?(previous_char) && ( VOICELESS.include?(current_char) || (!options[:skip_if_before_rezonant] && REZONANTS.include?(current_char)) ) string[ind-1] = VOICED_VS_VOICELESS[previous_char] end previous_char = current_char end # Звонкие согласные превращаются в глухие в конце слова string[string.length-1] = VOICED_VS_VOICELESS[previous_char] if VOICED.include?(previous_char) string end