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