class Alucard::Card

Constants

RANKS
RANK_NAMES
SUITS
SUIT_NAMES

Attributes

rank[R]
suit[R]

Public Class Methods

new(spec) click to toggle source
# File lib/alucard/card.rb, line 10
def initialize spec
  case spec
  when Fixnum
    @rank, @suit = spec % 13, spec / 13
  when /([#{RANKS}])([#{SUITS}])/
    @rank, @suit = RANKS.index($1), SUITS.index($2)
  when /(\w+) of (\w+)/
    r, s = $1.capitalize, $2.capitalize

    raise ArgumentError, "Not a rank name: '#{r}'" unless RANK_NAMES.include? r
    raise ArgumentError, "Not a suit name: '#{s}'" unless SUIT_NAMES.include? s

    @rank, @suit = RANK_NAMES.index(r), SUIT_NAMES.index(s)
  else
    raise ArgumentError, "Bad card spec: '#{spec}'"
  end
end

Public Instance Methods

to_s() click to toggle source
# File lib/alucard/card.rb, line 28
def to_s
  RANKS[@rank] + SUITS[@suit]
end