class Latinizer
Constants
- SUPPORTED_SCRIPTS
Public Class Methods
detect_non_latin_scripts(text)
click to toggle source
# File lib/latinizer.rb, line 45 def self.detect_non_latin_scripts(text) scripts = Unicode::Scripts.scripts(text) - ['Common', 'Inherited', 'Latin'] if is_japanese?(scripts) scripts -= ['Han', 'Hiragana', 'Katakana'] scripts += ['Japanese'] end scripts & SUPPORTED_SCRIPTS end
has_non_latin?(text)
click to toggle source
# File lib/latinizer.rb, line 62 def self.has_non_latin?(text) scripts = Unicode::Scripts.scripts(text) - ['Common', 'Inherited', 'Latin'] scripts.size > 0 ? true : false end
is_japanese?(scripts)
click to toggle source
# File lib/latinizer.rb, line 67 def self.is_japanese?(scripts) scripts.include?('Hiragana') || scripts.include?('Katakana') end
latinize_script(text, script, opt = nil)
click to toggle source
# File lib/latinizer.rb, line 30 def self.latinize_script(text, script, opt = nil) case script when 'Arabic' return Arabic.t(text) when 'Cyrillic' latinized = Translit.convert(text, :english) return opt == :ascii ? remove_diacritics(latinized) : latinized when 'Han' return Han.t(text, opt) when 'Japanese' return Japanese.t(text) end text end
remove_diacritics(text)
click to toggle source
# File lib/latinizer.rb, line 54 def self.remove_diacritics(text) text.to_slug.transliterate.to_s end
remove_non_ascii(text)
click to toggle source
# File lib/latinizer.rb, line 58 def self.remove_non_ascii(text) text.to_slug.transliterate.to_ascii.to_s end
t(text, opt = nil)
click to toggle source
# File lib/latinizer.rb, line 16 def self.t(text, opt = nil) scripts = detect_non_latin_scripts(text) if scripts.size == 0 return opt == :ascii ? remove_non_ascii(text) : text elsif scripts.size > 1 latinized = latinize_script(text, scripts.first, opt) return t(latinized, opt) end latinized = latinize_script(text, scripts.first, opt) opt == :ascii ? remove_non_ascii(latinized) : latinized end