From 98198617be00f0809eeed11316497c4df6d0f04a Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 12 Aug 2013 22:04:10 -0400 Subject: [PATCH] Value: keep track of divisor --- lib/gnucash/value.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/gnucash/value.rb b/lib/gnucash/value.rb index 6b69454..45ecc72 100644 --- a/lib/gnucash/value.rb +++ b/lib/gnucash/value.rb @@ -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)