class WishlistItem

Attributes

info[RW]
notes[RW]
rolls[RW]

Public Class Methods

new(lines) click to toggle source

rolls schema { Roll.key(item_id, perks) => [roll…] }

# File lib/dim_wishlist/item.rb, line 9
def initialize(lines)
  @info = []
  @notes = []
  @rolls = {}
  lines.each { |line| process(line) }
end

Public Instance Methods

has_roll?(item_id, perks) click to toggle source
# File lib/dim_wishlist/item.rb, line 20
def has_roll?(item_id, perks)
  !@rolls[Roll.key(item_id, perks)].nil?
end
item_ids() click to toggle source
# File lib/dim_wishlist/item.rb, line 16
def item_ids
  @rolls.values.map(&:item_id).uniq
end
to_s() click to toggle source
# File lib/dim_wishlist/item.rb, line 24
def to_s
  ["// #{@info.join('. ')}", "// #{@notes.join('. ')}", @rolls.values.map(&:to_s), "\n"].flatten.join("\n")
end

Private Instance Methods

handle_info_line(line) click to toggle source
# File lib/dim_wishlist/item.rb, line 38
def handle_info_line(line)
  @info << line.split('// ').last
end
handle_notes_line(line) click to toggle source
# File lib/dim_wishlist/item.rb, line 42
def handle_notes_line(line)
  @notes << line.split('//notes:').last
end
handle_wishlist_line(line) click to toggle source
# File lib/dim_wishlist/item.rb, line 46
def handle_wishlist_line(line)
  params = line.split('dimwishlist:').last.split('&')
  note_params = params.last.split('#notes')
  notes = note_params.last if note_params.length > 1
  item_id = params.first.split('=').last
  perks = params[1].split('=').last.split(',')

  roll = Roll.new(item_id: item_id, perks: perks, notes: notes)
  @rolls[roll.key] = roll
end
process(line) click to toggle source
# File lib/dim_wishlist/item.rb, line 30
def process(line)
  case line
  when %r{^// .*} then handle_info_line(line)
  when %r{^//notes:} then handle_notes_line(line)
  when /^dimwishlist:/ then handle_wishlist_line(line)
  end
end