Class: Cldr::Export::Data::Plurals::Rules
- Inherits:
-
Array
- Object
- Array
- Cldr::Export::Data::Plurals::Rules
- Defined in:
- lib/cldr/export/data/plurals/rules.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.parse(xml) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# File 'lib/cldr/export/data/plurals/rules.rb', line 10 def parse(xml) rules = new REXML::Document.new(xml).elements.each('//pluralRules') do |tag| rule = Rule.new(tag.attributes['locales'].split(/\s+/)) tag.elements.each('pluralRule') { |tag| rule << [tag.attributes['count'], tag.text] } rules << rule end rules end |
Instance Method Details
#locales ⇒ Object
21 22 23 |
# File 'lib/cldr/export/data/plurals/rules.rb', line 21 def locales @locales ||= map { |rule| rule.locales }.flatten.map(&:to_s).sort.map(&:to_sym) end |
#rule(locale) ⇒ Object
25 26 27 |
# File 'lib/cldr/export/data/plurals/rules.rb', line 25 def rule(locale) detect { |rule| rule.locales.include?(locale.to_sym) } end |
#to_ruby(options = {}) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/cldr/export/data/plurals/rules.rb', line 29 def to_ruby( = {}) namespaces = [:namespaces] || [:i18n] code = locales.map do |locale| rule = self.rule(locale) ruby = "{ :plural => { :keys => #{rule.keys.inspect}, :rule => #{rule.to_ruby} } }" ruby = namespaces.reverse.inject(ruby) { |ruby, namespace| "{ #{namespace.inspect} => #{ruby} }"} "#{locale.inspect} => #{ruby}" end.join(",\n") code = code.split("\n").map { |line| " #{line}" }.join("\n") "{\n" + code + "\n}" end |