module RGen::Util::MethodDelegation
Public Class Methods
registerDelegate(delegate, object, method)
click to toggle source
# File lib/rgen/util/method_delegation.rb, line 9 def registerDelegate(delegate, object, method) method = method.to_sym createDelegateStore(object) if object._methodDelegates[method] object._methodDelegates[method] << delegate else object._methodDelegates[method] = [delegate] createDelegatingMethod(object, method) end end
unregisterDelegate(delegate, object, method)
click to toggle source
# File lib/rgen/util/method_delegation.rb, line 20 def unregisterDelegate(delegate, object, method) method = method.to_sym return unless object.respond_to?(:_methodDelegates) return unless object._methodDelegates[method] object._methodDelegates[method].delete(delegate) if object._methodDelegates[method].empty? object._methodDelegates[method] = nil removeDelegatingMethod(object, method) removeDelegateStore(object) end end
Private Class Methods
createDelegateStore(object)
click to toggle source
# File lib/rgen/util/method_delegation.rb, line 34 def createDelegateStore(object) return if object.respond_to?(:_methodDelegates) class << object def _methodDelegates @_methodDelegates ||= {} end end end
createDelegatingMethod(object, method)
click to toggle source
# File lib/rgen/util/method_delegation.rb, line 50 def createDelegatingMethod(object, method) if hasMethod(object, method) object.instance_eval
removeDelegateStore(object)
click to toggle source
# File lib/rgen/util/method_delegation.rb, line 43 def removeDelegateStore(object) return unless object.respond_to?(:_methodDelegates) class << object remove_method(:_methodDelegates) end end