Bug #2206 ยป delegate_send.diff
| lib/delegate.rb | ||
|---|---|---|
|
# _obj_ will be delegated to.
|
||
|
#
|
||
|
def initialize(obj)
|
||
|
@access_private = false
|
||
|
__setobj__(obj)
|
||
|
end
|
||
| ... | ... | |
|
def method_missing(m, *args, &block)
|
||
|
begin
|
||
|
target = self.__getobj__
|
||
|
unless target.respond_to?(m)
|
||
|
access = @access_private
|
||
|
@access_private = false
|
||
|
unless target.respond_to?(m, access)
|
||
|
super(m, *args, &block)
|
||
|
else
|
||
|
target.__send__(m, *args, &block)
|
||
| ... | ... | |
|
end
|
||
|
#
|
||
|
# Delegation of calls, including the private methods
|
||
|
#
|
||
|
def __send__(*args)
|
||
|
@access_private = true
|
||
|
super
|
||
|
ensure
|
||
|
@access_private = false
|
||
|
end
|
||
|
alias_method :send, :__send__
|
||
|
#
|
||
|
# Checks for a method provided by this the delegate object by fowarding the
|
||
|
# call through \_\_getobj\_\_.
|
||
|
#
|
||