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