Class: DBF::ColumnBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/dbf/column_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(table, data, version_config) ⇒ ColumnBuilder

Returns a new instance of ColumnBuilder.



5
6
7
8
9
# File 'lib/dbf/column_builder.rb', line 5

def initialize(table, data, version_config)
  @table = table
  @data = data
  @version_config = version_config
end

Instance Method Details

#buildObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/dbf/column_builder.rb', line 11

def build
  safe_seek do
    @data.seek(@version_config.header_size)
    [].tap do |columns|
      until end_of_record?
        args = @version_config.read_column_args(@table, @data)
        # A descriptor truncated by EOF is returned as nil, or unpacks to
        # a nil length; stop rather than constructing an invalid column
        # (which would crash on nil < 0).
        break if args.nil? || args[3].nil?

        columns << Column.new(*args)
      end
    end
  end
end