class SpreadsheetImport::BaseProcessor

Attributes

mapping[R]
only_extract_valid_rows[R]
reader[R]
row_processor[R]
row_validator[R]

Public Class Methods

new(reader, mapping, options = {}) click to toggle source
# File lib/spreadsheet_import/data_processor/base_processor.rb, line 8
def initialize(reader, mapping, options = {})
  @reader = reader
  @mapping = mapping
  @row_processor = options[:row_processor]
  @row_validator = options[:row_validator]
  @only_extract_valid_rows = options[:only_extract_valid_rows]
end

Public Instance Methods

each()
Alias for: spreadsheet_rows
spreadsheet_rows() { |processed_row, true| ... } click to toggle source
# File lib/spreadsheet_import/data_processor/base_processor.rb, line 16
def spreadsheet_rows
  reader.each_row(mapping.values) do |row|
    processed_row = process_row(row)
    valid_row = valid_row?(processed_row)
    if only_extract_valid_rows
      valid_row && yield(processed_row, true)
    else
      yield(processed_row, valid_row)
    end
  end
end
Also aliased as: each

Protected Instance Methods

process_row(row) click to toggle source
# File lib/spreadsheet_import/data_processor/base_processor.rb, line 39
def process_row(row)
  unprocessed_row = unprocessed_row(row)
  if row_processor
    row_processor.process(unprocessed_row, self)
  else
    process_row_before_import(unprocessed_row)
  end
end
process_row_before_import(row) click to toggle source
# File lib/spreadsheet_import/data_processor/base_processor.rb, line 56
def process_row_before_import(row)
  row
end
unprocessed_row(row) click to toggle source
# File lib/spreadsheet_import/data_processor/base_processor.rb, line 31
def unprocessed_row(row)
  {}.tap do |attributes|
    mapping.keys.each_with_index do |column_name, index|
      attributes[column_name] = row[index]
    end
  end
end
valid_row?(row) click to toggle source
# File lib/spreadsheet_import/data_processor/base_processor.rb, line 48
def valid_row?(row)
  if row_validator
    row_validator.validate(row, self)
  else
    valid_row_for_import?(row)
  end
end
valid_row_for_import?(_row) click to toggle source
# File lib/spreadsheet_import/data_processor/base_processor.rb, line 60
def valid_row_for_import?(_row)
  true
end