lib/dbf/table.rb in dbf-1.2.0 vs lib/dbf/table.rb in dbf-1.2.1
- old
+ new
@@ -59,21 +59,23 @@
#
# @yield [nil, DBF::Record]
def each
0.upto(@record_count - 1) do |n|
seek_to_record(n)
- yield deleted_record? ? nil : DBF::Record.new(self)
+ yield current_record
end
end
- # Retrieve a record by index number
+ # Retrieve a record by index number.
+ # The record will be nil if it has been deleted, but not yet pruned from
+ # the database.
#
# @param [Fixnum] index
- # @return [DBF::Record]
+ # @return [DBF::Record, NilClass]
def record(index)
seek_to_record(index)
- deleted_record? ? nil : DBF::Record.new(self)
+ current_record
end
alias_method :row, :record
# Human readable version description
@@ -160,11 +162,11 @@
# for the record to be returned. The equivalent SQL would be "WHERE key1 = 'value1'
# AND key2 = 'value2'".
#
# @param [Fixnum, Symbol] command
# @param [optional, Hash] options Hash of search parameters
- # @yield [optional, DBF::Record]
+ # @yield [optional, DBF::Record, NilClass]
def find(command, options = {}, &block)
case command
when Fixnum
record(command)
when Array
@@ -244,9 +246,13 @@
# Is record marked for deletion
#
# @return [Boolean]
def deleted_record?
@data.read(1).unpack('a') == ['*']
+ end
+
+ def current_record
+ deleted_record? ? nil : DBF::Record.new(self)
end
# Determine database version, record count, header length and record length
def get_header_info
@data.rewind
\ No newline at end of file