Value: keep track of divisor

This commit is contained in:
Josh Holtrop 2013-08-12 22:04:10 -04:00
parent 4524d4e229
commit 98198617be

View File

@ -4,15 +4,17 @@ module Gnucash
attr_accessor :val
def initialize(val)
def initialize(val, div = 100)
if val.is_a?(String)
if val =~ /^(-?\d+)\/100$/
if val =~ /^(-?\d+)\/(\d+)$/
@val = $1.to_i
@div = $2.to_i
else
raise "Unexpected value string: #{val.inspect}"
end
elsif val.is_a?(Fixnum)
@val = val
@div = div
else
raise "Unexpected value type: #{val.class}"
end
@ -27,7 +29,11 @@ module Gnucash
end
def to_s
sprintf("%.02f", @val / 100.0)
sprintf("%.02f", to_f)
end
def to_f
@val / @div.to_f
end
def <=>(other)