Sha256: 23c31f71d43da6087a757c8adb748e063d83867e91060994c53f780d40051bf1

Contents?: true

Size: 708 Bytes

Versions: 1

Compression:

Stored size: 708 Bytes

Contents

# frozen_string_literal: true

module Rb21
  class Card
    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
    attr_reader :name, :suit

    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

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rb21-0.1.0 lib/rb21/card.rb