open both plain text and gzipped gnucash files

This commit is contained in:
Josh Holtrop 2013-08-11 13:58:15 -04:00
parent 022337f980
commit c66f46da9a
2 changed files with 15 additions and 2 deletions

View File

@ -9,7 +9,11 @@ module Gnucash
attr_accessor :end_date attr_accessor :end_date
def initialize(fname) def initialize(fname)
@ng = Nokogiri.XML(Zlib::GzipReader.open(fname).read) begin
@ng = Nokogiri.XML(Zlib::GzipReader.open(fname).read)
rescue Zlib::GzipFile::Error
@ng = Nokogiri.XML(File.read(fname))
end
book_nodes = @ng.xpath('/gnc-v2/gnc:book') book_nodes = @ng.xpath('/gnc-v2/gnc:book')
if book_nodes.count != 1 if book_nodes.count != 1
raise "Error: Expected to find one gnc:book entry" raise "Error: Expected to find one gnc:book entry"

View File

@ -1,3 +1,12 @@
describe Gnucash do describe Gnucash do
describe '.open' do
it 'opens a gzipped gnucash book' do
book = Gnucash.open("spec/books/sample.gnucash")
book.is_a?(Gnucash::Book).should be_true
end
it 'opens a plain text gnucash book' do
book = Gnucash.open("spec/books/sample-text.gnucash")
book.is_a?(Gnucash::Book).should be_true
end
end
end end