Class: HoneyFormat::RowBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/honey_format/matrix/row_builder.rb

Overview

Holds data for a single row.

Instance Method Summary collapse

Constructor Details

#initialize(columns, builder: nil, type_map: {}) ⇒ RowBuilder

Returns a new instance of RowBuilder.

Examples:

Create new row

RowBuilder.new!([:id])

Parameters:

  • columns (Array<Symbol>)

    an array of symbols.

  • builder (#call, #to_csv) (defaults to: nil)

    optional row builder.

  • type_map (Hash) (defaults to: {})

    map of column_name => type conversion to perform.

Raises:



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/honey_format/matrix/row_builder.rb', line 16

def initialize(columns, builder: nil, type_map: {})
  if columns.empty?
    err_msg = 'Expected array with at least one element, but was empty.'
    raise(Errors::EmptyRowColumnsError, err_msg)
  end

  @type_map = type_map
  @converter = HoneyFormat.converter_registry

  @row_klass = Row.new(*columns)
  @builder = builder
  @columns = columns
end

Instance Method Details

#build(row) ⇒ Row, Object

Returns an object representing the row.

Examples:

Build new row

r = RowBuilder.new([:id])
r.build(['1']).id #=> '1'

Parameters:

  • row (Array)

    the row array.

Returns:

  • (Row, Object)

    a new instance of built row.

Raises:



38
39
40
41
42
43
44
# File 'lib/honey_format/matrix/row_builder.rb', line 38

def build(row)
  build_row!(row)
rescue ArgumentError => e
  raise unless e.message == 'struct size differs'

  raise_invalid_row_length!(e, row)
end