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