Sha256: c19d24acfb4cd71790cf616ca975929e0e1e73d37985917f82fb99439fc22481

Contents?: true

Size: 1.25 KB

Versions: 8

Compression:

Stored size: 1.25 KB

Contents

require 'dmorrill10-utils'

class Suit
  exceptions :unrecognized_suit

  DOMAIN = {
    clubs: {acpc_character: 'c', html_character: '♣', number: 0},
    diamonds: {acpc_character: 'd', html_character: '♦', number: 1},
    hearts: {acpc_character: 'h', html_character: '♥', number: 2},
    spades: {acpc_character: 's', html_character: '♠', number: 3}
  }

  def self.hash_from_suit_token(suit)
    if suit.kind_of?(Integer)
      DOMAIN.find do |suit_symbol, properties|
        properties[:number] == suit
      end
    else
      DOMAIN.find do |suit_symbol, properties|
        suit_symbol == suit.to_sym ||
        properties[:acpc_character] == suit.to_s ||
        properties[:html_character] == suit.to_s
      end
    end
  end

  def self.symbol_from_suit_token(suit)
    suit_hash = hash_from_suit_token suit

    raise UnrecognizedSuit, suit.to_s unless suit_hash
    
    suit_hash.first
  end

  def initialize(suit)
    @symbol = Suit.symbol_from_suit_token suit
  end

  def to_sym
    @symbol
  end

  def to_i
    DOMAIN[@symbol][:number]
  end

  def to_acpc
    DOMAIN[@symbol][:acpc_character]
  end

  alias_method :to_s, :to_acpc
  alias_method :to_str, :to_s

  def to_html
    DOMAIN[@symbol][:html_character]
  end  
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
acpc_poker_types-0.0.10 lib/acpc_poker_types/suit.rb
acpc_poker_types-0.0.9 lib/acpc_poker_types/suit.rb
acpc_poker_types-0.0.8 lib/acpc_poker_types/suit.rb
acpc_poker_types-0.0.7 lib/acpc_poker_types/suit.rb
acpc_poker_types-0.0.6 lib/acpc_poker_types/suit.rb
acpc_poker_types-0.0.5 lib/acpc_poker_types/suit.rb
acpc_poker_types-0.0.4 lib/acpc_poker_types/suit.rb
acpc_poker_types-0.0.2 lib/acpc_poker_types/suit.rb