class Dicer::Delegator
Public Class Methods
def_delegators(klass, *methods)
click to toggle source
# File lib/dicer/delegator.rb, line 54 def self.def_delegators(klass, *methods) methods.each do |method| class_eval <<-EOF def #{method}(*args, &block) @delegate_object.__send__(:#{method}, *args, &block) end EOF end end
delegate_to(klass)
click to toggle source
# File lib/dicer/delegator.rb, line 49 def self.delegate_to(klass) delegate_methods = klass.public_methods.map(&:to_sym) - self.except_methods def_delegators(klass, *delegate_methods) end
except_methods()
click to toggle source
# File lib/dicer/delegator.rb, line 19 def self.except_methods @except_methods ||= [ :__send__, :__id__, :object_id, :respond_to?, :pure, :in_context, :as, :behaves_like, :methods, :public_methods, :private_methods, :protected_methods, :method_missing, :behaviors, # for RSpec :should, :should_not ] end
include(behavior)
click to toggle source
Calls superclass method
# File lib/dicer/delegator.rb, line 41 def self.include(behavior) super(behavior) if behavior <= Dicer::Behavior self.except_methods.concat(behavior.behavior_methods) end end
make(target_class, behaviors)
click to toggle source
# File lib/dicer/delegator.rb, line 3 def self.make(target_class, behaviors) delegator = Class.new(Dicer::Delegator) delegator.delegate_to(target_class) delegator.class_eval do include Dicer::Contextable behaviors.each do |behavior| include behavior end @@behaviors = behaviors end return delegator end
new(object)
click to toggle source
# File lib/dicer/delegator.rb, line 64 def initialize(object) @delegate_object = object end
Public Instance Methods
behaviors()
click to toggle source
# File lib/dicer/delegator.rb, line 96 def behaviors if pure.respond_to?(:behaviors) pure.behaviors | @@behaviors else @@behaviors end end
method_missing(name, *args, &block)
click to toggle source
# File lib/dicer/delegator.rb, line 92 def method_missing(name, *args, &block) @delegate_object.send(name, *args, &block) end
methods(*args)
click to toggle source
Calls superclass method
# File lib/dicer/delegator.rb, line 76 def methods(*args) @delegate_object.mehtods(*args) | super end
private_methods(*args)
click to toggle source
Calls superclass method
# File lib/dicer/delegator.rb, line 84 def private_methods(*args) @delegate_object.private_mehtods(*args) | super end
protected_methods(*args)
click to toggle source
Calls superclass method
# File lib/dicer/delegator.rb, line 88 def protected_methods(*args) @delegate_object.mehtods(*args) | super end
public_methods(*args)
click to toggle source
Calls superclass method
# File lib/dicer/delegator.rb, line 80 def public_methods(*args) @delegate_object.public_methods(*args) | super end
pure()
click to toggle source
# File lib/dicer/delegator.rb, line 68 def pure @delegate_object end
respond_to?(name, private = false)
click to toggle source
Calls superclass method
# File lib/dicer/delegator.rb, line 72 def respond_to?(name, private = false) super || @delegate_object.respond_to?(name) end