Module: UaEnv::Transliteration::National
- Defined in:
- lib/uaenv/transliteration/national.rb
Constant Summary collapse
- UA_UPPER =
%w{ А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я Ь ' }
- UA_LOWER =
%w{ а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ю я ь ' }
- UA =
UA_LOWER + UA_UPPER
- NATIONAL_LOWER =
['a', 'b', 'v', ['h', 'gh'], 'g', 'd', 'e', ['ie','ye'], 'zh', 'z', 'y', 'i', ['i','yi'], ['i','y'], 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'kh', 'ts', 'ch', 'sh', 'sch', ['iu','yu'], ['ia','ya'], '\'', '"' ]
- NATIONAL_UPPER =
NATIONAL_LOWER.map{ |i| i.is_a?( Array ) ? i.map{ |j| j.upcase } : i.upcase }
- NATIONAL =
NATIONAL_LOWER + NATIONAL_UPPER
- TABLE =
{}
Class Method Summary collapse
-
.translify(str) ⇒ Object
Просто замінює кирилицю в строці на латиницю.
Class Method Details
.translify(str) ⇒ Object
Просто замінює кирилицю в строці на латиницю
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/uaenv/transliteration/national.rb', line 35 def self.translify(str) chars = str.split(//) result = '' chars.each_with_index do | char, index | variant = (index != 0 ? ( chars[index - 1] == " " ? 1 : 0 ) : 1) if UA_UPPER.include?(char) && UA_LOWER.include?(chars[index+1]) # "Яна" => "Yana" ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant].downcase.capitalize : TABLE[char].downcase.capitalize) result << ch elsif UA_UPPER.include?(char) # "ЯНА" => "YANA" ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant] : TABLE[char] ) result << ch elsif UA_LOWER.include?(char) # "яна" => "yana" ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant] : TABLE[char] ) result << ch else result << char end end return result end |