class Moguro::Handlers::ClassHandler

Handler for method added event @private @since 0.0.1 @attr_reader [Class] binding class

Attributes

klass[R]

Public Class Methods

new(klass) click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 12
def initialize(klass)
  @klass = klass
  @instance_handlers = {}
  @class_handlers = {}
  @arguments_contract = nil
  @return_value_contract = nil
end

Public Instance Methods

_get_class_method_handler(name) click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 55
def _get_class_method_handler(name)
  @class_handlers[name]
end
_get_instance_method_handler(name) click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 59
def _get_instance_method_handler(name)
  @instance_handlers[name]
end
contract_arguments(callback) click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 43
def contract_arguments(callback)
  @arguments_contract = callback
end
contract_return_value(callback) click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 47
def contract_return_value(callback)
  @return_value_contract = callback
end
handle_method(name) click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 32
def handle_method(name)
  @instance_handlers[name] = MethodHandler.new(
    self,
    name,
    arguments_contract: @arguments_contract,
    return_value_contract: @return_value_contract
  )
  clear_validator
  @klass.prepend(@instance_handlers[name].module)
end
handle_singleton_method(name) click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 20
def handle_singleton_method(name)
  @class_handlers[name] ||= SingletonMethodHandler.new(
    self,
    name,
    arguments_contract: @arguments_contract,
    return_value_contract: @return_value_contract
  )
  clear_validator
  m = @class_handlers[name].module
  @klass.singleton_class.class_eval { prepend(m) }
end
validatable?() click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 51
def validatable?
  !@arguments_contract.nil? || !@return_value_contract.nil?
end

Private Instance Methods

clear_validator() click to toggle source
# File lib/moguro/handlers/class_handler.rb, line 65
def clear_validator
  @arguments_contract = nil
  @return_value_contract = nil
end