class ODSExtractor::RowOutput

Public Class Methods

new(use_header_row:, &row_handler_block) click to toggle source
# File lib/ods_extractor/row_output.rb, line 2
def initialize(use_header_row:, &row_handler_block)
  @header_cells = []
  @row_handler = row_handler_block
  @use_header_row = use_header_row
end

Public Instance Methods

build_row_hash(row_values) click to toggle source
# File lib/ods_extractor/row_output.rb, line 28
def build_row_hash(row_values)
  padded_row = row_values.take(@header_cells.length)
  (@header_cells.length - padded_row.length).times { padded_row << nil }
  @header_cells.zip(padded_row).to_h
end
end_sheet() click to toggle source
# File lib/ods_extractor/row_output.rb, line 25
def end_sheet
end
start_sheet(sheet_name) click to toggle source
# File lib/ods_extractor/row_output.rb, line 8
def start_sheet(sheet_name)
  @sheet_name = sheet_name
  @header_cells = nil
end
write_row(row_values) click to toggle source
# File lib/ods_extractor/row_output.rb, line 13
def write_row(row_values)
  if @use_header_row
    if @header_cells
      @row_handler.call(sheet_name: @sheet_name, row: build_row_hash(row_values))
    else
      @header_cells = row_values.map(&:to_s)
    end
  else
    @row_handler.call(sheet_name: @sheet_name, row: row_values)
  end
end