Module: Russian::Transliteration
- Extended by:
- Transliteration
- Included in:
- Transliteration
- Defined in:
- lib/russian/transliteration.rb
Overview
Russian transliteration
Транслитерация для букв русского алфавита
Constant Summary collapse
- LOWER_SINGLE =
Transliteration heavily based on rutils gem by Julian “julik” Tarkhanov and Co. <rutils.rubyforge.org/> Cleaned up and optimized.
{ "і"=>"i","ґ"=>"g","ё"=>"yo","№"=>"#","є"=>"e", "ї"=>"yi","а"=>"a","б"=>"b", "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"zh", "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r", "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h", "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"'", "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya", }
- LOWER_MULTI =
{ "ье"=>"ie", "ьё"=>"ie", }
- UPPER_SINGLE =
{ "Ґ"=>"G","Ё"=>"YO","Є"=>"E","Ї"=>"YI","І"=>"I", "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G", "Д"=>"D","Е"=>"E","Ж"=>"ZH","З"=>"Z","И"=>"I", "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N", "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T", "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH", "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"'","Ы"=>"Y","Ь"=>"", "Э"=>"E","Ю"=>"YU","Я"=>"YA", }
- UPPER_MULTI =
{ "ЬЕ"=>"IE", "ЬЁ"=>"IE", }
- LOWER =
(LOWER_SINGLE.merge(LOWER_MULTI)).freeze
- UPPER =
(UPPER_SINGLE.merge(UPPER_MULTI)).freeze
- MULTI_KEYS =
(LOWER_MULTI.merge(UPPER_MULTI)).keys.sort_by {|s| s.length}.reverse.freeze
- SCAN_REGEX =
%r{#{MULTI_KEYS.join '|'}|\w|.}.freeze
Instance Method Summary collapse
-
#transliterate(str) ⇒ Object
Transliterate a string with russian characters.
Instance Method Details
#transliterate(str) ⇒ Object
Transliterate a string with russian characters
Возвращает строку, в которой все буквы русского алфавита заменены на похожую по звучанию латиницу
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/russian/transliteration.rb', line 52 def transliterate(str) chars = str.scan(SCAN_REGEX) result = '' chars.each_with_index do |char, index| result << ( LOWER[char] || ( ( upper = UPPER[char] ) ? LOWER[chars[index+1]] ? upper.capitalize : upper : char ) ) end result end |