Module: Cyrillic
- Defined in:
- lib/cyrillic.rb,
lib/cyrillic/de.rb,
lib/cyrillic/iso9.rb,
lib/cyrillic/serbian.rb,
lib/cyrillic/version.rb,
lib/cyrillic/bgn_pcgn.rb,
lib/cyrillic/gost779b.rb,
lib/cyrillic/bulgarian.rb,
lib/cyrillic/mongolian.rb,
lib/cyrillic/ukrainian.rb,
lib/cyrillic/belarusian.rb,
lib/cyrillic/ua_passport.rb
Defined Under Namespace
Modules: Belarusian, BgnPcgn, Bulgarian, De, Gost779b, Iso9, Mongolian, Serbian, UaPassport, Ukrainian
Constant Summary collapse
- CHARACTER_TABLE =
k.zip(v).to_h.freeze
- REGEXP =
Regexp.union(CHARACTER_TABLE.keys).freeze
- SCHEMES =
{ cyrillic: [CHARACTER_TABLE, REGEXP].freeze, default: [CHARACTER_TABLE, REGEXP].freeze, iso9: [Iso9::CHARACTER_TABLE, Iso9::REGEXP].freeze, mongolian: [Mongolian::CHARACTER_TABLE, Mongolian::REGEXP].freeze, ukrainian: [Ukrainian::CHARACTER_TABLE, Ukrainian::REGEXP].freeze, ua_passport: :ua_passport, de: [De::CHARACTER_TABLE, De::REGEXP].freeze, serbian: [Serbian::CHARACTER_TABLE, Serbian::REGEXP].freeze, gost779b: [Gost779b::CHARACTER_TABLE, Gost779b::REGEXP].freeze, bgn_pcgn: [BgnPcgn::CHARACTER_TABLE, BgnPcgn::REGEXP].freeze, bulgarian: [Bulgarian::CHARACTER_TABLE, Bulgarian::REGEXP].freeze, belarusian: [Belarusian::CHARACTER_TABLE, Belarusian::REGEXP].freeze }.freeze
- REVERSE_SCHEMES =
{ iso9: build_reverse_mapping(Iso9::CHARACTER_TABLE), serbian: build_reverse_mapping( Serbian::CHARACTER_TABLE, { "LJ" => "Љ", "NJ" => "Њ", "DŽ" => "Џ", "DZ" => "Џ", "dz" => "џ" } ), gost779b: build_reverse_mapping(Gost779b::CHARACTER_TABLE), bgn_pcgn: build_reverse_mapping(BgnPcgn::CHARACTER_TABLE), bulgarian: build_reverse_mapping(Bulgarian::CHARACTER_TABLE), belarusian: build_reverse_mapping(Belarusian::CHARACTER_TABLE), mongolian: build_reverse_mapping(Mongolian::CHARACTER_TABLE), ukrainian: build_reverse_mapping(Ukrainian::CHARACTER_TABLE), de: build_reverse_mapping(De::CHARACTER_TABLE), cyrillic: build_reverse_mapping(CHARACTER_TABLE), default: build_reverse_mapping(CHARACTER_TABLE) }.freeze
- VERSION =
"0.4.0"
Class Method Summary collapse
- .build_reverse_mapping(table, extra = {}) ⇒ Object
-
.detransliterate(string = "", scheme = nil, from: nil) ⇒ String
(also: det, reverse_transliterate)
Detransliterates (reverses) Latin script text back into Cyrillic script.
-
.transliterate(string = "", to = :cyrillic) ⇒ String
(also: t)
Transliterates Cyrillic text into Roman (Latin) script.
Class Method Details
.build_reverse_mapping(table, extra = {}) ⇒ Object
43 44 45 46 47 48 |
# File 'lib/cyrillic.rb', line 43 def self.build_reverse_mapping(table, extra = {}) rev = table.reject { |_cyr, lat| lat.nil? || lat.empty? }.to_h { |cyr, lat| [lat, cyr] } rev.merge!(extra) sorted_keys = rev.keys.sort_by { |key| -key.length } [rev.freeze, Regexp.union(sorted_keys).freeze].freeze end |
.detransliterate(string = "", scheme = nil, from: nil) ⇒ String Also known as: det, reverse_transliterate
Detransliterates (reverses) Latin script text back into Cyrillic script.
116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/cyrillic.rb', line 116 def detransliterate(string = "", scheme = nil, from: nil) return "" if string.nil? || string.empty? chosen = from || scheme || :iso9 scheme_key = chosen.to_s.downcase.to_sym scheme_data = REVERSE_SCHEMES[scheme_key] unless scheme_data available = (REVERSE_SCHEMES.keys - [:default]).map(&:inspect).join(", ") raise ArgumentError, "Unknown detransliteration scheme: #{chosen.inspect}. Available schemes: #{available}" end table, regexp = scheme_data string.to_s.gsub(regexp, table) end |
.transliterate(string = "", to = :cyrillic) ⇒ String Also known as: t
Transliterates Cyrillic text into Roman (Latin) script.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/cyrillic.rb', line 84 def transliterate(string = "", to = :cyrillic) return "" if string.nil? || string.empty? scheme_key = to.to_s.downcase.to_sym scheme = SCHEMES[scheme_key] unless scheme available = (SCHEMES.keys - [:default]).map(&:inspect).join(", ") raise ArgumentError, "Unknown transliteration scheme: #{to.inspect}. Available schemes: #{available}" end return UaPassport.transliterate(string) if scheme_key == :ua_passport table, regexp = scheme string.to_s.gsub(regexp, table) end |