class TwitterCldr::Formatters::Rbnf::Plural

Attributes

cases[R]
locale[R]
plural_type[R]

Public Class Methods

from_string(locale, str) click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf/plural.rb, line 11
def self.from_string(locale, str)
  # $(cardinal,one{ tysiąc}few{ tysiące}other{ tysięcy})$
  plural_type, cases = str.gsub(/\$\((.*)\)\$/, '\1').split(',')

  # one{ tysiąc}few{ tysiące}other{ tysięcy}
  cases = cases.scan(/([\w]+)\{([^}]+)\}/).inject({}) do |ret, case_arr|
    ret[case_arr.first.to_sym] = case_arr.last
    ret
  end

  new(locale, plural_type.to_sym, cases)
end
new(locale, plural_type, cases) click to toggle source

plural_type = cardinal, etc cases = hash of form one: “foo”, two: “bar”

# File lib/twitter_cldr/formatters/numbers/rbnf/plural.rb, line 28
def initialize(locale, plural_type, cases)
  @locale = locale
  @plural_type = plural_type
  @cases = cases
end

Public Instance Methods

render(number) click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf/plural.rb, line 34
def render(number)
  rule_name = TwitterCldr::Formatters::Plurals::Rules.rule_for(
    number, locale, plural_type
  )

  cases[rule_name] || cases[:other]
end
type() click to toggle source
# File lib/twitter_cldr/formatters/numbers/rbnf/plural.rb, line 42
def type
  :plural
end