class AmountFormatter
Constants
- FORMAT_DEFAULT_ARGS
Public Class Methods
format(number, args = {})
click to toggle source
Returns the number as a formatted string.
# File lib/amount_formatter.rb, line 9 def self.format(number, args = {}) separator = args[:separator] || default_separator delimiter = args[:delimiter] || default_delimiter args = FORMAT_DEFAULT_ARGS.merge(args) number = number.to_f unless number.is_a?(Float) return sprintf("%.#{args[:precision].to_i}f", number).gsub(".", separator) if number < 1 && number > -1 number = sprintf("%.#{args[:precision].to_i}f", number).split(".") str = "" number[0].reverse.scan(/(.{1,3})/) do |match| if match[0] == "-" #This happens if the number is a negative number and we reach the minus-sign. str << match[0] else str << delimiter if str.length > 0 str << match[0] end end str = str.reverse str << "#{separator}#{number[1]}" if args[:precision] > 0 return str end
locale_engine=(engine)
click to toggle source
# File lib/amount_formatter.rb, line 4 def self.locale_engine=(engine) @locale_engine = engine end
Private Class Methods
default_delimiter()
click to toggle source
# File lib/amount_formatter.rb, line 46 def self.default_delimiter if @locale_engine == :i18n && I18n.exists?("number.format.delimiter") translation = I18n.t("number.format.delimiter").to_s.strip return translation unless translation.empty? end return "," end
default_separator()
click to toggle source
# File lib/amount_formatter.rb, line 37 def self.default_separator if @locale_engine == :i18n && I18n.exists?("number.format.separator") translation = I18n.t("number.format.separator").to_s.strip return translation unless translation.empty? end return "." end