class TwitterCldr::Formatters::Rbnf::RbnfFormatter
Constants
- DEFAULT_SPELLOUT_OPTIONS
Attributes
locale[R]
Public Class Methods
new(locale = TwitterCldr.locale)
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 38 def initialize(locale = TwitterCldr.locale) @locale = TwitterCldr.convert_locale(locale) end
supported_locale?(locale)
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 32 def self.supported_locale?(locale) TwitterCldr.resource_exists?('locales', locale, 'rbnf') end
Public Instance Methods
format(number, options = {})
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 42 def format(number, options = {}) rule_group_name, rule_set_name = *if options[:rule_group].nil? && options[:rule_set].nil? [DEFAULT_SPELLOUT_OPTIONS[:rule_group], DEFAULT_SPELLOUT_OPTIONS[:rule_set]] else [options[:rule_group], options[:rule_set]] end if rule_group = rule_group_by_name(rule_group_name) if rule_set = rule_group.rule_set_for(rule_set_name) if rule_set.public? RuleFormatter.format(number, rule_set, rule_group, locale) else raise PrivateRuleSetError.new( "#{rule_set_name} is a private rule set and cannot be used directly." ) end end end end
group_names()
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 62 def group_names @group_names ||= resource.map { |g| g[:type] } end
rule_set_names_for_group(group_name)
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 66 def rule_set_names_for_group(group_name) cache_key = TwitterCldr::Utils.compute_cache_key(locale, group_name) rule_set_name_cache[cache_key] ||= begin if rule_group = rule_group_by_name(group_name) rule_group.rule_sets.inject([]) do |ret, rule_set| ret << rule_set.name if rule_set.public? ret end end end rule_set_name_cache[cache_key] || [] end
Private Instance Methods
resource()
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 124 def resource @resource ||= TwitterCldr.get_locale_resource(locale, "rbnf")[locale][:rbnf][:grouping] end
rule_group_by_name(name)
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 83 def rule_group_by_name(name) cache_key = TwitterCldr::Utils.compute_cache_key(locale, name) rule_group_cache[cache_key] ||= begin group_data = resource.find do |group| group[:type] == name end if group_data rule_group_from_resource(group_data) end end end
rule_group_cache()
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 97 def rule_group_cache @@rule_group_cache ||= {} end
rule_group_from_resource(group_data)
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 115 def rule_group_from_resource(group_data) RuleGroup.new( group_data[:ruleset].map do |rule_set_data| rule_set_from_resource(rule_set_data) end, group_data[:type] ) end
rule_set_from_resource(rule_set_data)
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 105 def rule_set_from_resource(rule_set_data) RuleSet.new( rule_set_data[:rules].map do |rule| Rule.new(rule[:value], rule[:rule], rule[:radix], locale) end, rule_set_data[:type], rule_set_data[:access] || "public" ) end
rule_set_name_cache()
click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf.rb, line 101 def rule_set_name_cache @@rule_set_name_cache ||= {} end