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