class Cardistry::Deck

Attributes

suits[R]

Public Class Methods

new() click to toggle source
# File lib/cardistry/deck.rb, line 10
def initialize
  @cards = []
  @suits = []
end

Public Instance Methods

[](index) click to toggle source
# File lib/cardistry/deck.rb, line 34
def [] index
  @cards[index] || "Not found"
end
each(&block) click to toggle source
# File lib/cardistry/deck.rb, line 30
def each &block
  @cards.each &block
end
info() click to toggle source
# File lib/cardistry/deck.rb, line 42
    def info
      info = <<~INFO
        cards: #{size}
        suits: #{@suits}
      INFO
    end
load(from_file) click to toggle source
# File lib/cardistry/deck.rb, line 15
def load from_file
  data = File.read from_file

  JSON.parse(data, { symbolize_names: true }).each do |entry|
    rank = entry[:rank]
    suit = entry[:suit] ? entry[:suit].to_sym : nil
    kind = entry[:kind] ? entry[:kind].to_sym : nil
    name = entry[:name]

    card = Card.new( rank, suit, kind, name )
    register_suit card.suit
    @cards << card
  end
end
size() click to toggle source
# File lib/cardistry/deck.rb, line 38
def size
  @cards.size
end

Private Instance Methods

register_suit(suit) click to toggle source
# File lib/cardistry/deck.rb, line 51
def register_suit suit
  @suits << suit unless @suits.include?(suit) or !suit
end