class Lionel::Export::CardMap

Attributes

cards[R]
worksheet[R]

Public Class Methods

new(cards, worksheet) click to toggle source
# File lib/lionel/export.rb, line 173
def initialize(cards, worksheet)
  @cards, @worksheet = cards, worksheet
end

Public Instance Methods

each(&block) click to toggle source
# File lib/lionel/export.rb, line 177
def each(&block)
  rows.each(&block)
end
rows() click to toggle source
# File lib/lionel/export.rb, line 181
def rows
  @rows ||= populate_rows
end

Private Instance Methods

populate_rows() click to toggle source
# File lib/lionel/export.rb, line 187
def populate_rows
  {}.tap do |card_rows|

    start_row = 2 # Currently assumes a header column
    rows = worksheet.size

    # Find existing rows for current cards
    (start_row..rows).each do |row|
      cell_id = worksheet["B",row]
      next unless cell_id.present?
      card = cards.find { |c| c.id == cell_id }
      next unless card.present?
      card_rows[row] = card
    end

    # Set available rows for new cards
    new_cards = cards - card_rows.values
    new_cards.each_with_index do |card, i|
      row = rows + i + 1
      card_rows[row] = card
    end
  end
end