class Paperize::Worksheet

Attributes

attributes[R]
labels[R]
rows[R]
title[R]

Public Class Methods

find(options={}) click to toggle source
# File lib/paperize/worksheet.rb, line 5
def self.find(options={})
  spreadsheet = Paperize::Spreadsheet.find(options[:spreadsheet_key])
  spreadsheet.worksheet_by_title(options[:worksheet_title])
end
new(title, labels, rows) click to toggle source
# File lib/paperize/worksheet.rb, line 11
def initialize(title, labels, rows)
  raise_on_duplicates(labels)

  @title = title
  @labels = labels
  @attributes = @labels.map do |label|
    unless label.nil?
      label.downcase.gsub(' ', '_').gsub('/', '_').to_sym
    end
  end

  @rows = rows.map do |row|
    card = OpenStruct.new

    @attributes.zip(row).each do |attribute_value_pair|
      attribute = attribute_value_pair[0]
      unless attribute.nil? or attribute.empty?
        card.send("#{attribute}=".to_sym, attribute_value_pair[1])
      end
    end

    card
  end      
end

Private Class Methods

from_google_worksheet(google_worksheet) click to toggle source
# File lib/paperize/worksheet.rb, line 60
def self.from_google_worksheet(google_worksheet)
  Worksheet.new(google_worksheet.title,
                google_worksheet.rows[0],
                google_worksheet.rows[1..google_worksheet.num_rows])
end

Public Instance Methods

as_json(option=nil) click to toggle source
# File lib/paperize/worksheet.rb, line 40
def as_json(option=nil)
  {
    title: @title,
    columns: @labels
  }
end
cards() click to toggle source
# File lib/paperize/worksheet.rb, line 36
def cards
  rows
end

Private Instance Methods

raise_on_duplicates(labels) click to toggle source
# File lib/paperize/worksheet.rb, line 48
def raise_on_duplicates(labels)
  duplicates = labels.map do |label|
    label if labels.index(label) != labels.rindex(label)
  end.compact.uniq

  unless duplicates.empty?
    duplicate_sentence = "\"#{duplicates.join('", "')}\""
    message = "Found duplicate columns: #{duplicate_sentence}"
    raise Paperize::DuplicateColumnLabelException.new(message)
  end
end