tokens_for_locale

in lib/twitter_cldr/js/renderers/data/numbers/numbers_renderer.rb [12:50]


            def tokens_for_locale(locale)
              DataReaders::NumberDataReader.types.inject({}) do |ret, type|
                ret[type] = {}
                [:positive, :negative].each do |sign|
                  ret[type][sign] = case type
                    when :short_decimal, :long_decimal
                      (DataReaders::NumberDataReader::ABBREVIATED_MIN_POWER..DataReaders::NumberDataReader::ABBREVIATED_MAX_POWER).inject({}) do |formats, i|
                        exponent = 10 ** i
                        data_reader = DataReaders::NumberDataReader.new(locale, :type => type, :format => exponent)

                        patterns = data_reader.pattern(exponent).inject({}) do |memo, (plural, pattern)|
                          if pattern.is_a?(String)
                            tokens = data_reader.tokenizer.tokenize(pattern).map(&:value)
                            
                            memo[plural] = sign == :positive ? tokens : ["-"] + tokens[1..-1]
                          elsif pattern == 0
                            
                          else
                            puts "Invalid number pattern for locale=#{locale}, type=#{type}, sign=#{sign}, i=#{i}: #{pattern.inspect}"
                          end

                          memo
                        end

                        formats[exponent] = patterns unless patterns.empty?

                        formats
                      end
                    else
                      data_reader = DataReaders::NumberDataReader.new(locale, :type => type)
                      number = sign == :positive ? 1 : -1
                      pattern = data_reader.pattern(number)
                      data_reader.tokenizer.tokenize(pattern).map(&:value)
                  end
                end
                ret
              end
            end