Sha256: 6292ceedd7b07e859c4eb17f02d4a187c3329f7822301585d0831c9a3a7ee9d3

Contents?: true

Size: 1.46 KB

Versions: 46

Compression:

Stored size: 1.46 KB

Contents

# encoding: UTF-8

# Copyright 2012 Twitter, Inc
# http://www.apache.org/licenses/LICENSE-2.0

require 'cldr-plurals/ruby_runtime'

module TwitterCldr
  module Formatters
    module Plurals
      module Rules

        class << self

          DEFAULT_TYPE = :cardinal

          def all(type = DEFAULT_TYPE)
            all_for(TwitterCldr.locale, type)
          end

          def all_for(locale, type = DEFAULT_TYPE)
            names(locale, type)
          end

          def rule_for(number, locale = TwitterCldr.locale, type = DEFAULT_TYPE)
            rule(locale, type).call(number.to_s, CldrPlurals::RubyRuntime)
          rescue
            :other
          end

          protected

          def get_resource(locale)
            locale = TwitterCldr.convert_locale(locale)
            cache_key = TwitterCldr::Utils.compute_cache_key(locale)
            locale_cache[cache_key] ||= begin
              rsrc = TwitterCldr.get_locale_resource(locale, :plurals)[locale]
              rsrc.inject({}) do |ret, (rule_type, rule_data)|
                ret[rule_type] = rule_data.merge(rule: eval(rule_data[:rule]))
                ret
              end
            end
          end

          def rule(locale, type)
            get_resource(locale)[type][:rule]
          end

          def names(locale, type)
            get_resource(locale)[type][:names]
          end

          def locale_cache
            @locale_cache ||= {}
          end

        end

      end
    end
  end
end

Version data entries

46 entries across 46 versions & 2 rubygems

Version Path
twitter_cldr-6.13.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.12.1 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.12.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.11.5 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.11.4 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.11.3 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.11.2 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.11.1 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.11.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.10.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.9.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.8.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.7.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.6.2 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.6.1 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.6.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.5.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.4.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.3.0 lib/twitter_cldr/formatters/plurals/rules.rb
twitter_cldr-6.2.0 lib/twitter_cldr/formatters/plurals/rules.rb