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
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
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
accessor for @formats
@private
# File lib/merb-helpers/core_ext/numeric.rb, line 74 74: def self.formats 75: @formats 76: end
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
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
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
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
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.
Generated with the Darkfish Rdoc Generator 1.1.6.