class Anki::Deck

Attributes

card_data[RW]
card_headers[RW]
field_separator[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/anki/deck.rb, line 6
def initialize(options = {})
  @card_headers = options.delete(:card_headers)
  @card_data = options.delete(:card_data)
  @field_separator = options.delete(:field_separator) || ";"
end

Public Instance Methods

generate_deck(options = {}) click to toggle source
# File lib/anki/deck.rb, line 12
def generate_deck(options = {})
  raise ArgumentError, "card_headers must be an array" if !self.card_headers.is_a?(Array)
  raise ArgumentError, "card_headers must not be empty" if self.card_headers.empty?
  raise ArgumentError, "card_data must be an array" if !self.card_data.is_a?(Array)
  raise ArgumentError, "card_data must not be empty" if self.card_data.empty?

  anki_string = ""
  anki_string << card_header_to_string()
  anki_string << self.card_data.map { |card| card_data_to_string(card) }.compact.join("\n")
  create_file(anki_string, options[:file]) if options[:file]
  anki_string
end

Private Instance Methods

card_data_to_string(card) click to toggle source
# File lib/anki/deck.rb, line 31
def card_data_to_string(card)
  raise ArgumentError, "card must be a hash" if !card.is_a?(Hash)

  card.default = ""

  self.card_headers.map{ |header| card[header] }.join(@field_separator)
end
card_header_to_string() click to toggle source
# File lib/anki/deck.rb, line 27
def card_header_to_string()
  "#" + self.card_headers.join(@field_separator) + "\n"
end
create_file(str, file) click to toggle source
# File lib/anki/deck.rb, line 39
def create_file(str, file)
  File.open(file, 'w') { |f| f.write(str) }
end