Sha256: 35d562f0de48b691a5f03c1cdb88c8f40fa509f2b09c69d0941fa48c90b97f05

Contents?: true

Size: 712 Bytes

Versions: 1

Compression:

Stored size: 712 Bytes

Contents

require 'dmorrill10-utils/class'

require 'delegate'

class ChipStack < DelegateClass(Integer)
  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 or @value.round != @value
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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