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