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

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

      raise_invalid_row_length!(e, row)
    end
Returns a new instance of RowBuilder.
 @return [RowBuilder] a new instance of RowBuilder.
 @param [Array<Symbol>] columns an array of symbols.
 @param builder [#call, #to_csv] optional row builder.
 @param type_map [Hash] map of column_name => type conversion to perform.
 @raise [RowError] super class of errors raised when there is a row error.
 @raise [EmptyRowColumnsError] raised when there are no columns.
 @raise [InvalidRowLengthError] raised when row has more columns than header columns.
 @example Create new row
     RowBuilder.new!([:id])
 Returns an object representing the row.
 @return [Row, Object] a new instance of built row.
 @param row [Array] the row array.
 @raise [InvalidRowLengthError]
   raised when there are more row elements longer than columns
 @example Build new row
     r = RowBuilder.new([:id])
     r.build(['1']).id #=> '1'