diff --git a/lib/gnucash/book.rb b/lib/gnucash/book.rb index ecc05c4..5e92b24 100644 --- a/lib/gnucash/book.rb +++ b/lib/gnucash/book.rb @@ -9,7 +9,11 @@ module Gnucash attr_accessor :end_date 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') if book_nodes.count != 1 raise "Error: Expected to find one gnc:book entry" diff --git a/spec/gnucash_spec.rb b/spec/gnucash_spec.rb index 851b694..8c6cdcc 100644 --- a/spec/gnucash_spec.rb +++ b/spec/gnucash_spec.rb @@ -1,3 +1,12 @@ 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