Class: Mon::Contract::MonadContract
- Inherits:
-
Contracts::CallableClass
- Object
- Contracts::CallableClass
- Mon::Contract::MonadContract
show all
- Defined in:
- lib/contracts/monad_contract.rb
Instance Method Summary
collapse
Constructor Details
Returns a new instance of MonadContract.
10
11
12
13
14
15
|
# 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
|
Instance Method Details
#nested_contract ⇒ Object
17
18
19
|
# File 'lib/contracts/monad_contract.rb', line 17
def nested_contract
@nested_contract
end
|
#to_s ⇒ Object
30
31
32
|
# File 'lib/contracts/monad_contract.rb', line 30
def to_s
"#{ self.class.name }[#{@nested_contract.to_s}]"
end
|
#valid?(val) ⇒ Boolean
21
22
23
|
# 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) ⇒ Boolean
25
26
27
28
|
# 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
|