class TwitterCldr::Shared::NumberingSystem
Attributes
digits[R]
name[R]
Public Class Methods
for_locale(locale, format = :decimal)
click to toggle source
# File lib/twitter_cldr/shared/numbering_system.rb, line 26 def for_locale(locale, format = :decimal) locale_cache[locale] ||= begin num_resource = TwitterCldr.get_locale_resource(locale, :numbers) system_name = TwitterCldr::Utils.traverse_hash( num_resource[locale], [:numbers, :formats, format, :number_system] ) system_name ||= TwitterCldr::Utils.traverse_hash( num_resource[locale], [:numbers, :default_number_systems, :default] ) for_name(system_name) if system_name end end
for_name(name)
click to toggle source
# File lib/twitter_cldr/shared/numbering_system.rb, line 14 def for_name(name) name_cache[name] ||= begin if system = resource[name.to_sym] if system[:type] != "numeric" raise UnsupportedNumberingSystemError.new("#{system[:type]} numbering systems not supported.") else new(system[:name], system[:digits]) end end end end
new(name, digits)
click to toggle source
# File lib/twitter_cldr/shared/numbering_system.rb, line 59 def initialize(name, digits) @name = name @digits = split_digits(digits) end
Private Class Methods
locale_cache()
click to toggle source
# File lib/twitter_cldr/shared/numbering_system.rb, line 44 def locale_cache @locale_cache ||= {} end
name_cache()
click to toggle source
# File lib/twitter_cldr/shared/numbering_system.rb, line 48 def name_cache @name_cache ||= {} end
resource()
click to toggle source
# File lib/twitter_cldr/shared/numbering_system.rb, line 52 def resource @resource ||= TwitterCldr.get_resource(:shared, :numbering_systems)[:numbering_systems] end
Public Instance Methods
transliterate(number)
click to toggle source
# File lib/twitter_cldr/shared/numbering_system.rb, line 64 def transliterate(number) number.to_s.gsub(/\d/) do |digit| digits[digit.to_i] end end
Private Instance Methods
split_digits(str)
click to toggle source
# File lib/twitter_cldr/shared/numbering_system.rb, line 72 def split_digits(str) str.unpack("U*").map { |digit| [digit].pack("U*") } end