Files

Numeric::Transformer

Public Class Methods

add_format(format) click to toggle source
 Adds a new format to the existing transforming formats

 ==== Parameters
 format <Hash>:: format defining how to transform numeric values

 ==== Examples

 @public
     # File lib/merb-helpers/core_ext/numeric.rb, line 115
115:     def self.add_format(format)
116:       formats.merge!(format)
117:       formats[format]
118:     end
change_default_format(format_code) click to toggle source
 Changes the default format to use when transforming a +Numeric+ instance

 ==== Parameters
 format_code <Symbol>:: format name to use as the new default format

 ==== Returns
 Hash:: a hash representing the default format

 @public
     # File lib/merb-helpers/core_ext/numeric.rb, line 100
100:     def self.change_default_format(format_code)
101:       @default_format = (formats[format_code] || default_format)
102:     end
default_format() click to toggle source
 Accessor for the default format in use

 @public
    # File lib/merb-helpers/core_ext/numeric.rb, line 85
85:     def self.default_format
86:       @default_format
87:     end
formats() click to toggle source
 accessor for @formats

 @private
    # File lib/merb-helpers/core_ext/numeric.rb, line 74
74:     def self.formats
75:       @formats
76:     end
minutes_to_hours(minutes) click to toggle source
 Converts a +numeric+ value representing minutes into a string representing an hour value

 ==== Parameters
 number<Numeric>:: Numeric value representing minutes to convert in hours

 ==== Returns
 String:: a string representing the numeric value converted in hours

 ==== Examples
 minutes_to_hours(315) => "05:15"

 @private
     # File lib/merb-helpers/core_ext/numeric.rb, line 264
264:     def self.minutes_to_hours(minutes)
265:       hours = (minutes/60).ceil
266:       minutes = (minutes - (hours * 60)).to_i
267:       "#{two_digits(hours)}:#{two_digits(minutes)}"
268:     end
to_currency(number, format_name = nil, options = {}) click to toggle source
 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.

 ==== Parameters
 number<Numeric>:: Numeric value to convert
 format_name<Symbol>:: name of the format to use
 options<Hash>:: options which will overwrite the used format

 ==== Returns
 String:: a string representing the number converted in currency

 ==== Options
 :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

 ==== Examples
 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"

 @private
     # File lib/merb-helpers/core_ext/numeric.rb, line 221
221:     def self.to_currency(number, format_name = nil, options = {})
222:       
223:       format = (formats[format_name] || default_format)[:currency].merge(options)
224: 
225:       begin
226:         format[:format].gsub(/%n/, with_precision(number, 
227:                                       format_name, :precision  => format[:precision]) ).gsub(/%u/, format[:unit])
228:       rescue
229:         number
230:       end
231:     end
two_digits(number) click to toggle source
 Formats a +number+ into a two digit string. Basically it prepends an integer to a 2 digits string.

 ==== Parameters
 number<Numeric>:: Numeric value to convert

 ==== Returns
 String:: a string representing the number converted into a 2 digits string.

 ==== Examples
 two_digits(5-3) # => "02"

 @private
     # File lib/merb-helpers/core_ext/numeric.rb, line 247
247:     def self.two_digits(number)
248:       (0..9).include?(number) ? "0#{number}" : number.to_s
249:     end
with_delimiter(number, format_name = nil, options = {}) click to toggle source
 Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324). You can
 pass another format to format the number differently.

 ==== Parameters
 format_name<Symbol>:: name of the format to use
 options<Hash>:: options which will overwrite the used format

 ==== Returns
 String:: a string representing the delimited number

 ==== Options
 :delimiter - Overwrites the thousands delimiter.
 :separator - Overwrites the separator between the units.

 ==== Examples
 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

 @private
     # File lib/merb-helpers/core_ext/numeric.rb, line 144
144:     def self.with_delimiter(number, format_name = nil, options = {})
145:       
146:       format = (formats[format_name] || default_format)[:number].merge(options)
147: 
148:       begin
149:         parts = number.to_s.split('.')
150:         parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{format[:delimiter]}")
151:         parts.join(format[:separator])
152:       rescue
153:         number
154:       end
155:     end
with_precision(number, format_name = nil, options={}) click to toggle source
 Formats a +number+ with a level of <tt>:precision</tt> (e.g., 112.32 has a precision of 2).
 You can pass another format to use and even overwrite the format's options.

 ==== Parameters
 format_name<Symbol>:: name of the format to use
 options<Hash>:: options which will overwrite the used format

 ==== Returns
 String:: a string representing the delimited number

 ==== Options
 :precision - Overwrites the level of precision
 :separator - Overwrites the separator between the units
 :delimiter - Overwrites the thousands delimiter

 ==== Examples
 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"

 @private
     # File lib/merb-helpers/core_ext/numeric.rb, line 180
180:     def self.with_precision(number, format_name = nil, options={})
181: 
182:       format = (formats[format_name] || default_format)[:number].merge(options)
183: 
184:       begin
185:         rounded_number = (Float(number) * (10 ** format[:precision])).round.to_f / 10 ** format[:precision]
186:         with_delimiter("%01.#{format[:precision]}f" % rounded_number, format_name, :delimiter => format[:delimiter], :separator => format[:separator])
187:       rescue
188:         number
189:       end
190:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.