lib/dbf/reader.rb in dbf-0.5.1 vs lib/dbf/reader.rb in dbf-0.5.2

- old
+ new

@@ -1,19 +1,25 @@ module DBF class Reader # The total number of fields (columns) attr_reader :field_count + # An array of DBF::Field records attr_reader :fields - # The total number of records. This number includes any deleted records. + + # The total number of records. This number includes records marked as deleted. attr_reader :record_count + # Internal dBase version number attr_reader :version + # Last updated datetime attr_reader :last_updated + # Either :fpt or :dpt attr_reader :memo_file_format + # The block size for memo records attr_reader :memo_block_size # Initialize a new DBF::Reader. # Example: @@ -53,22 +59,23 @@ # can be a symbol or a string. def field(field_name) @fields.detect {|f| f.name == field_name.to_s} end - # An array of all the records contained in the database file + # An array of all the records contained in the database file. Each record is an instance + # of DBF::Record (or nil if the record is marked for deletion). def records if in_memory? @records ||= get_all_records_from_file else get_all_records_from_file end end alias_method :rows, :records - # Returns the record at <tt>index</tt>. + # Returns a DBF::Record (or nil if the record has been marked for deletion) for the record at <tt>index</tt>. def record(index) if in_memory? records[index] else get_record_from_file(index) @@ -235,13 +242,19 @@ seek_to_record(index) active_record? ? Record.new(self, @data_file, @memo_file) : nil end def get_all_records_from_file - seek_to_record(0) - Array.new(@record_count) do |i| - active_record? ? DBF::Record.new(self, @data_file, @memo_file) : nil + all_records = [] + 0.upto(@record_count - 1) do |n| + seek_to_record(n) + if active_record? + all_records << DBF::Record.new(self, @data_file, @memo_file) + else + all_records << nil + end end + all_records end end end \ No newline at end of file