| Module | Numeric::Transformer |
| In: |
merb-helpers/lib/merb-helpers/core_ext/numeric.rb
|
Changes the default format to use when transforming a Numeric instance
| format_code <Symbol>: | format name to use as the new default format |
| Hash: | a hash representing the default format |
# File merb-helpers/lib/merb-helpers/core_ext/numeric.rb, line 99
99: def self.change_default_format(format_code)
100: @default_format = (formats[format_code] || default_format)
101: end
Accessor for the default format in use
# File merb-helpers/lib/merb-helpers/core_ext/numeric.rb, line 84
84: def self.default_format
85: @default_format
86: end
Converts a numeric value representing minutes into a string representing an hour value
| number<Numeric>: | Numeric value representing minutes to convert in hours |
| String: | a string representing the numeric value converted in hours |
minutes_to_hours(315) => "05:15"
# File merb-helpers/lib/merb-helpers/core_ext/numeric.rb, line 263
263: def self.minutes_to_hours(minutes)
264: hours = (minutes/60).ceil
265: minutes = (minutes - (hours * 60)).to_i
266: "#{two_digits(hours)}:#{two_digits(minutes)}"
267: end
Formats a number into a currency string (e.g., $13.65). You can specify a format to use and even overwrite some of the format options.
| number<Numeric>: | Numeric value to convert |
| format_name<Symbol>: | name of the format to use |
| options<Hash>: | options which will overwrite the used format |
| String: | a string representing the number converted in currency |
:precision - Sets the level of precision :unit - Sets the denomination of the currency :format - Sets the format of the output string (defaults to "%u%n"). The field types are:
%u The currency unit %n The number
to_currency(1234567890.506, :US, :precision => 1) # => "$1,234,567,890.5" to_currency(1234567890.516, :FR) # =>"1 234 567 890,52€" to_currency(1234567890.516, :US, :unit => "€") # =>"€1,234,567,890.52" to_currency(1234567890.506, :US, :precision => 3, :unit => "€") # => "€1,234,567,890.506" to_currency(1234567890.506, :AU, :unit => "$AUD", :format => ’%n %u’) # => "1,234,567,890.51 $AUD"
# File merb-helpers/lib/merb-helpers/core_ext/numeric.rb, line 220
220: def self.to_currency(number, format_name = nil, options = {})
221:
222: format = (formats[format_name] || default_format)[:currency].merge(options)
223:
224: begin
225: format[:format].gsub(/%n/, with_precision(number,
226: format_name, :precision => format[:precision]) ).gsub(/%u/, format[:unit])
227: rescue
228: number
229: end
230: end
Formats a number into a two digit string. Basically it prepends an integer to a 2 digits string.
| number<Numeric>: | Numeric value to convert |
| String: | a string representing the number converted into a 2 digits string. |
two_digits(5-3) # => "02"
# File merb-helpers/lib/merb-helpers/core_ext/numeric.rb, line 246
246: def self.two_digits(number)
247: (0..9).include?(number) ? "0#{number}" : number.to_s
248: end
Formats a number with grouped thousands using delimiter (e.g., 12,324). You can pass another format to format the number differently.
| format_name<Symbol>: | name of the format to use |
| options<Hash>: | options which will overwrite the used format |
| String: | a string representing the delimited number |
:delimiter - Overwrites the thousands delimiter. :separator - Overwrites the separator between the units.
with_delimiter(12345678) # => 12,345,678 with_delimiter(12345678.05) # => 12,345,678.05 with_delimiter(12345678, :FR) # => 12.345.678 with_delimiter(12345678, :US) # => 12,345,678
# File merb-helpers/lib/merb-helpers/core_ext/numeric.rb, line 143
143: def self.with_delimiter(number, format_name = nil, options = {})
144:
145: format = (formats[format_name] || default_format)[:number].merge(options)
146:
147: begin
148: parts = number.to_s.split('.')
149: parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{format[:delimiter]}")
150: parts.join(format[:separator])
151: rescue
152: number
153: end
154: end
Formats a number with a level of :precision (e.g., 112.32 has a precision of 2). You can pass another format to use and even overwrite the format‘s options.
| format_name<Symbol>: | name of the format to use |
| options<Hash>: | options which will overwrite the used format |
| String: | a string representing the delimited number |
:precision - Overwrites the level of precision :separator - Overwrites the separator between the units :delimiter - Overwrites the thousands delimiter
with_precision(111.2345) # => 111.235 with_precision(111.2345, :UK, :precision => 1) # => "111.2" with_precision(1234.567, :US, :precision => 1, :separator => ’,’, :delimiter => ’-’) # => "1-234,6"
# File merb-helpers/lib/merb-helpers/core_ext/numeric.rb, line 179
179: def self.with_precision(number, format_name = nil, options={})
180:
181: format = (formats[format_name] || default_format)[:number].merge(options)
182:
183: begin
184: rounded_number = (Float(number) * (10 ** format[:precision])).round.to_f / 10 ** format[:precision]
185: with_delimiter("%01.#{format[:precision]}f" % rounded_number, format_name, :delimiter => format[:delimiter], :separator => format[:separator])
186: rescue
187: number
188: end
189: end