class MtgRb::Multiverse
A multiverse contains cards, expansions, printings, etc It is the entry point for the data and can be created from MTGJSON.
Attributes
artists[R]
cards[R]
expansions[R]
Public Class Methods
from_hash(all_expansions)
click to toggle source
@param [Hash] The result of parsing AllSets.json @return [Multiverse] A populated multiverse from JSON
# File lib/mtg_rb/multiverse.rb, line 7 def self.from_hash(all_expansions) # {name => object} lookup tables cards_cache = {} artists_cache = {} expansions_cache = {} all_expansions.each do |expansion_code, expansion_hash| expansion = MtgRb::Expansion.from_hash(expansion_hash) expansion_hash.fetch("cards").each do |card_hash| card_name = card_hash.fetch("name") card = cards_cache[card_name] ||= MtgRb::Card.from_hash(card_hash) artist_name = card_hash.fetch("artist") artist = artists_cache[artist_name] ||= MtgRb::Artist.new(name: artist_name, printings: []) printing = MtgRb::Printing.from_card_hash( expansion: expansion, card: card, artist: artist, card_hash: card_hash, ) card.printings << printing artist.printings << printing expansion.printings << printing end expansions_cache[expansion.name] = expansion end self.new({ cards: cards_cache, artists: artists_cache, expansions: expansions_cache, }) end
new(cards:, artists:, expansions:)
click to toggle source
# File lib/mtg_rb/multiverse.rb, line 43 def initialize(cards:, artists:, expansions:) @cards = cards @artists = artists @expansions = expansions end