parse

in lib/twitter_cldr/parsers/number_parser.rb [23:39]


      def parse(number_text, options = {})
        options[:strict] = true unless options.include?(:strict)
        group, decimal = separators(options[:strict])
        tokens = tokenize(number_text, group, decimal)

        num_list, punct_list = tokens.partition { |t| t[:type] == :numeric }
        raise InvalidNumberError unless punct_valid?(punct_list)
        raise InvalidNumberError unless tokens.last && tokens.last[:type] == :numeric

        if punct_list.last && punct_list.last[:type] == :decimal
          result = num_list[0..-2].map { |num| num[:value] }.join.to_i
          result + num_list.last[:value].to_i / (10.0 ** num_list.last[:value].size)
        else
          num_list.map { |num| num[:value] }.join.to_i
        end
      end