Sha256: f3fb17fa5f9f8834360a58700a0f5b01ce8e16cf077f73537b62940a69ab8e1b

Contents?: true

Size: 758 Bytes

Versions: 1

Compression:

Stored size: 758 Bytes

Contents

require 'dmorrill10-utils/class'
require 'delegate'

module AcpcPokerTypes
  class ChipStack < DelegateClass(Rational)
    exceptions :illegal_number_of_chips

    # @param [#to_i] number_of_chips The number of chips to be made into a stack.
    # @raise (see #assert_valid_value)
    def initialize(number_of_chips=0)
      @value = number_of_chips.to_i

      assert_valid_value

      super @value
    end

    def receive!(number_of_chips)
      @value += number_of_chips

      assert_valid_value

      __setobj__ @value

      self
    end
    def give!(number_of_chips)
      receive!(-number_of_chips)
    end

    private

    # @raise IllegalNumberOfChips
    def assert_valid_value
      raise IllegalNumberOfChips if @value < 0
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
acpc_poker_types-3.0.2 lib/acpc_poker_types/chip_stack.rb