Sha256: 54ec165408bf4114dbc822ad0e8d92b7667de90b248083415f15d40276cec51f

Contents?: true

Size: 900 Bytes

Versions: 1

Compression:

Stored size: 900 Bytes

Contents

class AmountFormatter
  FORMAT_DEFAULT_ARGS = {:precision => 2, :separator => ".", :delimiter => ","}
  
  #Returns the number as a formatted string.
  def self.format(number, args = {})
    args = FORMAT_DEFAULT_ARGS.merge(args)
    number = number.to_f unless number.is_a?(Float)
    return sprintf("%.#{args[:precision].to_i}f", number).gsub(".", args[: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 << args[:delimiter] if str.length > 0
        str << match[0]
      end
    end
    
    str = str.reverse
    str << "#{args[:separator]}#{number[1]}" if args[:precision] > 0
    
    return str
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
amount_formatter-0.0.2 lib/amount_formatter.rb