class Moguro::Contract

Contract of class state @since 0.0.1 @abstract

Attributes

method[R]

Public Class Methods

new(klass, callback, method) click to toggle source
# File lib/moguro/contract.rb, line 12
def initialize(klass, callback, method)
  @klass = klass
  @type_clauses = Moguro::Processors::ContractProcessor.generate_type_validator(callback, klass)
  @cb = callback
  @method = method
end

Public Instance Methods

extractor() click to toggle source
# File lib/moguro/contract.rb, line 25
def extractor
  raise NotImplementedError
end
verify!(instance, args) click to toggle source
# File lib/moguro/contract.rb, line 19
def verify!(instance, args)
  values = extractor.extract(args)
  @type_clauses.verify!(values)
  instance.instance_exec(values.to_h, &@cb)
end