Class: ActiveSupport::NumberHelper::NumberConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/active_support/number_helper/number_converter.rb

Overview

:nodoc:

Constant Summary collapse

DEFAULTS =
{
  # Used in number_to_delimited
  # These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
  format: {
    # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
    separator: ".",
    # Delimits thousands (e.g. 1,000,000 is a million) (always in groups of three)
    delimiter: ",",
    # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
    precision: 3,
    # If set to true, precision will mean the number of significant digits instead
    # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2)
    significant: false,
    # If set, the zeros after the decimal separator will always be stripped (e.g.: 1.200 will be 1.2)
    strip_insignificant_zeros: false
  },

  # Used in number_to_currency
  currency: {
    format: {
      format: "%u%n",
      negative_format: "-%u%n",
      unit: "$",
      # These five are to override number.format and are optional
      separator: ".",
      delimiter: ",",
      precision: 2,
      significant: false,
      strip_insignificant_zeros: false
    }
  },

  # Used in number_to_percentage
  percentage: {
    format: {
      delimiter: "",
      format: "%n%"
    }
  },

  # Used in number_to_rounded
  precision: {
    format: {
      delimiter: ""
    }
  },

  # Used in number_to_human_size and number_to_human
  human: {
    format: {
      # These five are to override number.format and are optional
      delimiter: "",
      precision: 3,
      significant: true,
      strip_insignificant_zeros: true
    },
    # Used in number_to_human_size
    storage_units: {
      # Storage units output formatting.
      # %u is the storage unit, %n is the number (default: 2 MB)
      format: "%n %u",
      units: {
        byte: "Bytes",
        kb: "KB",
        mb: "MB",
        gb: "GB",
        tb: "TB"
      }
    },
    # Used in number_to_human
    decimal_units: {
      format: "%n %u",
      # Decimal units output formatting
      # By default we will only quantify some of the exponents
      # but the commented ones might be defined or overridden
      # by the user.
      units: {
        # femto: Quadrillionth
        # pico: Trillionth
        # nano: Billionth
        # micro: Millionth
        # mili: Thousandth
        # centi: Hundredth
        # deci: Tenth
        unit: "",
        # ten:
        #   one: Ten
        #   other: Tens
        # hundred: Hundred
        thousand: "Thousand",
        million: "Million",
        billion: "Billion",
        trillion: "Trillion",
        quadrillion: "Quadrillion"
      }
    }
  }
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(number, options) ⇒ NumberConverter

Returns a new instance of NumberConverter.



124
125
126
127
128
# File 'lib/active_support/number_helper/number_converter.rb', line 124

def initialize(number, options)
  @number = number
  @opts = options.symbolize_keys
  @options = nil
end

Instance Attribute Details

#numberObject (readonly)

Returns the value of attribute number.



19
20
21
# File 'lib/active_support/number_helper/number_converter.rb', line 19

def number
  @number
end

#optsObject (readonly)

Returns the value of attribute opts.



19
20
21
# File 'lib/active_support/number_helper/number_converter.rb', line 19

def opts
  @opts
end

Class Method Details

.convert(number, options) ⇒ Object



120
121
122
# File 'lib/active_support/number_helper/number_converter.rb', line 120

def self.convert(number, options)
  new(number, options).execute
end

Instance Method Details

#executeObject



130
131
132
133
134
135
136
137
138
# File 'lib/active_support/number_helper/number_converter.rb', line 130

def execute
  if !number
    nil
  elsif validate_float? && !valid_bigdecimal
    number
  else
    convert
  end
end