mirror of
https://github.com/mistergibson/gxg-web-client.git
synced 2026-08-15 03:26:00 -07:00
41 lines
763 B
Ruby
41 lines
763 B
Ruby
##
|
|
# DelegatedMethod is used to implement Module#define_method
|
|
|
|
module Rubinius
|
|
class DelegatedMethod < Executable
|
|
def initialize(name, method, receiver, pass_self=false)
|
|
@name = name
|
|
@method = method
|
|
@receiver = receiver
|
|
@pass_self = pass_self
|
|
end
|
|
|
|
private :initialize
|
|
|
|
attr_reader :name
|
|
attr_reader :receiver
|
|
|
|
def call(called_object, called_method, *args, &block)
|
|
args.unshift called_object if @pass_self
|
|
@receiver.__send__(@method, *args, &block)
|
|
end
|
|
|
|
alias_method :activate, :call
|
|
|
|
def arity
|
|
@receiver.arity
|
|
end
|
|
|
|
def parameters
|
|
@receiver.parameters
|
|
end
|
|
|
|
def source_location
|
|
@receiver.source_location
|
|
end
|
|
|
|
def scope
|
|
nil
|
|
end
|
|
end
|
|
end
|