class Mon::Contract::MonadContract

Public Class Methods

new(*vals) click to toggle source
# File lib/contracts/monad_contract.rb, line 10
def initialize(*vals)
  if vals.length != 1
    throw ArgumentError.new("Incorrect usage of #{ self.class.name } contract, should be #{ self.class.name }[<contract>]")
  end
  @nested_contract = vals[0]
end

Public Instance Methods

nested_contract() click to toggle source
# File lib/contracts/monad_contract.rb, line 17
def nested_contract
  @nested_contract
end
to_s() click to toggle source
# File lib/contracts/monad_contract.rb, line 30
def to_s
  "#{ self.class.name }[#{@nested_contract.to_s}]"
end
valid?(val) click to toggle source
# File lib/contracts/monad_contract.rb, line 21
def valid?(val)
  throw RuntimeError.new("MonadContract is abstract, #valid? must be overridden!")
end
valid_nested_contract?(val) click to toggle source
# File lib/contracts/monad_contract.rb, line 25
def valid_nested_contract?(val)
  nested_validator = Object::Contract::make_validator(@nested_contract)
  nested_validator.call(val)
end