class Wishlist

Constants

WISHLIST_URI

Attributes

items[RW]

Public Class Methods

new(wishlist_items = []) click to toggle source
# File lib/dim_wishlist.rb, line 43
def initialize(wishlist_items = [])
  @items = {}
  wishlist_items.each(&:add_item)
end
parse(wishlist_uri = WISHLIST_URI) click to toggle source
# File lib/dim_wishlist.rb, line 14
def parse(wishlist_uri = WISHLIST_URI)
  instance = self.new
  body = get_wishlist_text(wishlist_uri)

  return if body.nil?

  lines = []
  body.split("\n").each do |line|
    if line =~ %r{// [a-zA-Z(]|//notes:|dimwishlist:}
      lines << line
    elsif lines.length.positive?
      instance.add_item(WishlistItem.new(lines)) rescue nil
      lines.clear
    end
  end

  instance
end

Private Class Methods

get_wishlist_text(wishlist_uri) click to toggle source
# File lib/dim_wishlist.rb, line 35
def get_wishlist_text(wishlist_uri)
  uri = URI(wishlist_uri)
  res = Net::HTTP.get_response(uri)

  res.body if res.is_a?(Net::HTTPSuccess)
end

Public Instance Methods

add_item(wishlist_item) click to toggle source
# File lib/dim_wishlist.rb, line 48
def add_item(wishlist_item)
  wishlist_item.item_ids.each do |id|
    @items[id] ||= []
    @items[id] << wishlist_item
    @items[id].uniq!
  end

  wishlist_item
end
items_with_id(id) click to toggle source
# File lib/dim_wishlist.rb, line 58
def items_with_id(id)
  @items[id] || []
end
to_s() click to toggle source
# File lib/dim_wishlist.rb, line 66
def to_s
  @items.values.flatten.map(&:to_s).join
end
wishlist_item?(id, perks) click to toggle source
# File lib/dim_wishlist.rb, line 62
def wishlist_item?(id, perks)
  items_with_id(id).any? { |item| item.has_roll?(id, perks) }
end