Value: keep track of divisor
This commit is contained in:
parent
4524d4e229
commit
98198617be
@ -4,15 +4,17 @@ module Gnucash
|
|||||||
|
|
||||||
attr_accessor :val
|
attr_accessor :val
|
||||||
|
|
||||||
def initialize(val)
|
def initialize(val, div = 100)
|
||||||
if val.is_a?(String)
|
if val.is_a?(String)
|
||||||
if val =~ /^(-?\d+)\/100$/
|
if val =~ /^(-?\d+)\/(\d+)$/
|
||||||
@val = $1.to_i
|
@val = $1.to_i
|
||||||
|
@div = $2.to_i
|
||||||
else
|
else
|
||||||
raise "Unexpected value string: #{val.inspect}"
|
raise "Unexpected value string: #{val.inspect}"
|
||||||
end
|
end
|
||||||
elsif val.is_a?(Fixnum)
|
elsif val.is_a?(Fixnum)
|
||||||
@val = val
|
@val = val
|
||||||
|
@div = div
|
||||||
else
|
else
|
||||||
raise "Unexpected value type: #{val.class}"
|
raise "Unexpected value type: #{val.class}"
|
||||||
end
|
end
|
||||||
@ -27,7 +29,11 @@ module Gnucash
|
|||||||
end
|
end
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
sprintf("%.02f", @val / 100.0)
|
sprintf("%.02f", to_f)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_f
|
||||||
|
@val / @div.to_f
|
||||||
end
|
end
|
||||||
|
|
||||||
def <=>(other)
|
def <=>(other)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user