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