Class: SpreadsheetImport::SimpleReader

Inherits:
BaseReader
  • Object
show all
Includes:
Enumerable
Defined in:
lib/spreadsheet_import/reader/simple_reader.rb

Instance Attribute Summary

Attributes inherited from BaseReader

#end_row, #file_url, #spreadsheet, #start_row

Instance Method Summary collapse

Constructor Details

#initialize(file_url, options = {}) ⇒ SimpleReader

Returns a new instance of SimpleReader.



7
8
9
10
11
# File 'lib/spreadsheet_import/reader/simple_reader.rb', line 7

def initialize(file_url, options = {})
  super
  @spreadsheet = SimpleSpreadsheet::Workbook.read(file_url)
  @end_row = options[:end_row] || spreadsheet.last_row
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object

delegate all methods to SimpleSpreadsheet gem



32
33
34
35
36
37
38
# File 'lib/spreadsheet_import/reader/simple_reader.rb', line 32

def method_missing(method, *args)
  if spreadsheet.respond_to?(method)
    spreadsheet.public_send(method, *args)
  else
    super
  end
end

Instance Method Details

#default_required_columnsObject



17
18
19
# File 'lib/spreadsheet_import/reader/simple_reader.rb', line 17

def default_required_columns
  spreadsheet.first_column.upto(spreadsheet.last_column)
end

#each_row(required_columns = default_required_columns) ⇒ Object Also known as: each



21
22
23
24
25
26
27
28
# File 'lib/spreadsheet_import/reader/simple_reader.rb', line 21

def each_row(required_columns = default_required_columns)
  row_range.each do |row|
    entire_row = required_columns.each_with_object([]) do |col, acc|
      acc << spreadsheet.cell(row, col)
    end
    yield entire_row
  end
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/spreadsheet_import/reader/simple_reader.rb', line 40

def respond_to_missing?(method_name, include_private = false)
  spreadsheet.respond_to?(method_name, include_private) || super
end

#row_rangeObject



13
14
15
# File 'lib/spreadsheet_import/reader/simple_reader.rb', line 13

def row_range
  (start_row..end_row)
end