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