class ReadXls::RecordHandler::MulRk

Constants

RKREC_SIZE
RK_DATA_OFFSET

Public Instance Methods

call() click to toggle source
# File lib/read_xls/record_handler/mul_rk.rb, line 7
def call
  row, column_offset = record_data
                         .byteslice(0, 4)
                         .unpack("v2")
  last_column        = record_data[-2, 2].unpack("v").first
  number_of_columns  = last_column - column_offset + 1
  rk_data            = record_data[RK_DATA_OFFSET..-3]

  number_of_columns.times.each do |column_index|
    rk_rec            = rk_data[(column_index * RKREC_SIZE), RKREC_SIZE]
    ix_index, rk_bits = rk_rec.byteslice(0, RKREC_SIZE).unpack("vV")

    rk_column = ::ReadXls::Evaluator::RkNumber.new(builder, rk_bits, ix_index)

    builder.add_column_to_row(
      row,
      column_index + column_offset,
      rk_column
    )
  end
end