Class: Rb21::Card

Inherits:
Object
  • Object
show all
Defined in:
lib/rb21/card.rb

Constant Summary collapse

SUITS =
%w[Clubs Diamonds Hearts Spades].freeze
FACES =
%w[Jack Queen King].freeze
NORMALS =
(2..9).map(&:to_s).freeze
ACE =
"Ace"
TEN_VALUES =
(["10"] + FACES).freeze
ALL_NAMES =
(TEN_VALUES + NORMALS + [ACE]).freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, suit) ⇒ Card

Returns a new instance of Card.

Raises:

  • (ArgumentError)


13
14
15
16
17
18
# File 'lib/rb21/card.rb', line 13

def initialize(name, suit)
  raise ArgumentError, "Invalid name" unless ALL_NAMES.include?(name)
  raise ArgumentError, "Invalid suit" unless SUITS.include?(suit)
  @name = name
  @suit = suit
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



11
12
13
# File 'lib/rb21/card.rb', line 11

def name
  @name
end

#suitObject (readonly)

Returns the value of attribute suit.



11
12
13
# File 'lib/rb21/card.rb', line 11

def suit
  @suit
end

Instance Method Details

#valueObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/rb21/card.rb', line 20

def value
  case @name
  when ACE
    [1, 11]
  when *TEN_VALUES
    [10]
  else
    [@name.to_i]
  end
end