rails/transliteration/uk.rb in rails-i18n-7.0.9 vs rails/transliteration/uk.rb in rails-i18n-7.0.10

- old
+ new

@@ -1,112 +1,5 @@ -# encoding: utf-8 - -module RailsI18n - module Transliteration - module Ukrainian - class << self - def rule - lambda do |string| - next '' unless string - - string.gsub(/./) do |char| - # Regexp.last_match is local to the thread and method scope - # of the method that did the pattern match. - @pre_match, @post_match = $`, $' - - case char - when 'Ж' - lookahead_upcase 'ZH' - when 'Х' - lookahead_upcase 'KH' - when 'Ц' - lookahead_upcase 'TS' - when 'Ч' - lookahead_upcase 'CH' - when 'Ш' - lookahead_upcase 'SH' - when 'Щ' - lookahead_upcase 'SHCH' - when 'г' - behind =~ /[зЗ]/ ? 'gh' : 'h' - when 'Г' - behind =~ /[зЗ]/ ? lookahead_upcase('GH') : 'H' - when 'є' - letter?(behind) ? 'ie' : 'ye' - when 'Є' - letter?(behind) ? lookahead_upcase('IE') : lookahead_upcase('YE') - when 'ї' - letter?(behind) ? 'i' : 'yi' - when 'Ї' - letter?(behind) ? 'I' : lookahead_upcase('YI') - when 'й' - letter?(behind) ? 'i' : 'y' - when 'Й' - letter?(behind) ? 'I' : 'Y' - when 'ю' - letter?(behind) ? 'iu' : 'yu' - when 'Ю' - letter?(behind) ? lookahead_upcase('IU') : lookahead_upcase('YU') - when 'я' - letter?(behind) ? 'ia' : 'ya' - when 'Я' - letter?(behind) ? lookahead_upcase('IA') : lookahead_upcase('YA') - when "'" - # remove apostrophe inside a word - letter?(behind) && letter?(ahead) ? '' : "'" - else - straight_lookup[char] || char - end - end - end - end - - private - - def behind - @pre_match && @pre_match[-1] - end - - def ahead - @post_match && @post_match[0] - end - - def downcased?(symbol) - symbol =~ downcased_regexp - end - - def downcased_regexp - @downcased_regexp ||= /[а-яґєії]/ - end - - # apostrophe can be inside a word - def letter?(symbol) - symbol =~ letter_regexp - end - - def letter_regexp - @letter_regexp ||= /[а-яґєіїА-ЯҐЄІЇ'’]/ - end - - def lookahead_upcase(word) - downcased?(ahead) ? word.capitalize : word.upcase - end - - def straight_lookup - @straight_lookup ||= { - 'а'=>'a','б'=>'b','в'=>'v','ґ'=>'g','д'=>'d','е'=>'e','ж'=>'zh', - 'з'=>'z','и'=>'y','і'=>'i','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o', - 'п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'kh','ц'=>'ts', - 'ч'=>'ch','ш'=>'sh','щ'=>'shch','ь'=>'','’'=>'', - 'А'=>'A','Б'=>'B','В'=>'V','Ґ'=>'G','Д'=>'D','Е'=>'E', - 'З'=>'Z','И'=>'Y','І'=>'I','К'=>'K','Л'=>'L','М'=>'M','Н'=>'N','О'=>'O', - 'П'=>'P','Р'=>'R','С'=>'S','Т'=>'T','У'=>'U','Ф'=>'F','Ь'=>'' - } - end - end - end - end -end +require 'rails_i18n/transliteration' { :uk => { :i18n => { :transliterate => { :rule => RailsI18n::Transliteration::Ukrainian.rule }}}} \ No newline at end of file