Sha256: 8d54939878f7dce082ed0c4e85e70bb3b56313da67ab8f3a7f8d2a7be8d86500
Contents?: true
Size: 963 Bytes
Versions: 25
Compression:
Stored size: 963 Bytes
Contents
module Perennial # Objective-C / Cocoa style 'delegates'. # Essentially proxies which dispatch only # when an object responds to the method. class DelegateProxy < Proxy def initialize(t) @__proxy_target__ = t end def respond_to?(method, inc_super = false) true end protected def method_missing(method, *args, &blk) @__proxy_target__.send(method, *args, &blk) if @__proxy_target__.respond_to?(method) end end module Delegateable def self.included(parent) parent.send(:include, InstanceMethods) end module InstanceMethods def delegate=(value) @delegate = DelegateProxy.new(value) end alias delegate_to delegate= def delegate @delegate ||= DelegateProxy.new(nil) end def real_delegate @delegate && @delegate.__proxy_target__ end end end end
Version data entries
25 entries across 25 versions & 2 rubygems