module Russian::Transliteration

Russian transliteration

Транслитерация для букв русского алфавита

Constants

LOWER
LOWER_MULTI
LOWER_SINGLE

Transliteration heavily based on rutils gem by Julian “julik” Tarkhanov and Co. <rutils.rubyforge.org/> Cleaned up and optimized.

MULTI_KEYS
UPPER
UPPER_MULTI
UPPER_SINGLE

Public Instance Methods

transliterate(str) click to toggle source

Transliterate a string with russian characters

Возвращает строку, в которой все буквы русского алфавита заменены на похожую по звучанию латиницу

# File lib/russian/transliteration.rb, line 50
def transliterate(str)
  chars = str.scan(%r{#{MULTI_KEYS.join '|'}|\w|.})

  result = ""

  chars.each_with_index do |char, index|
    if UPPER.has_key?(char) && LOWER.has_key?(chars[index+1])
      # combined case
      result << UPPER[char].downcase.capitalize
    elsif UPPER.has_key?(char)
      result << UPPER[char]
    elsif LOWER.has_key?(char)
      result << LOWER[char]
    else
      result << char
    end
  end

  result
end