class SpreadsheetStreamReader::Sheet

Attributes

batch_size[RW]
counter[RW]
data[RW]
offset[RW]
w_sheet[RW]

Public Class Methods

new(_sheet, batch_size = 1000) click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 6
def initialize(_sheet, batch_size = 1000)
  self.batch_size = batch_size
  self.offset = 1
  self.counter = 0
  self.data = Array.new
  self.w_sheet = _sheet
end

Public Instance Methods

get_content_in_chunks() click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 32
def get_content_in_chunks
  clear_data

  sheet.each @offset do |row|
    increment_counter
    @data << row[0..(row.size - 1)]
    break if reached_batch_size? || reached_end_of_file?
  end
end
stream_rows_in_batch() { |row| ... } click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 14
def stream_rows_in_batch
  if block_given?
    while offset < max_record
      get_content_in_chunks

      @data.each do |row|
        yield row
      end

      increment_offset
    end
  else
    get_content_in_chunks
    increment_offset
    @data
  end
end

Private Instance Methods

clear_data() click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 68
def clear_data
  @data.clear
end
increment_counter() click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 52
def increment_counter
  @counter += 1
end
increment_offset() click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 56
def increment_offset
  @offset += @batch_size
end
max_record() click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 48
def max_record
  @max_record ||= sheet.last_row_index
end
reached_batch_size?() click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 60
def reached_batch_size?
  (counter % @batch_size).zero?
end
reached_end_of_file?() click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 64
def reached_end_of_file?
  counter == max_record
end
sheet() click to toggle source
# File lib/spreadsheet_stream_reader/sheet.rb, line 44
def sheet
  @w_sheet
end