diff options
author | (no author) <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-02-20 08:56:42 +0000 |
---|---|---|
committer | (no author) <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-02-20 08:56:42 +0000 |
commit | 21e36414c9b1d21f593a236a6a20df507a33b986 (patch) | |
tree | c77cf738688717f0571e9eb09ad99c1dadfded86 /lib/delegate.rb | |
parent | fd1d8cdc09ed86e4a0812120a17ff0d7b04adcaf (diff) |
This commit was manufactured by cvs2svn to create tag 'v1_1b8'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_1b8@87 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/delegate.rb')
-rw-r--r-- | lib/delegate.rb | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/delegate.rb b/lib/delegate.rb index e5943cead8..571bf87510 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -7,16 +7,16 @@ # # Usage: # foo = Object.new -# foo = SimpleDelegater.new(foo) +# foo = SimpleDelegator.new(foo) # foo.type # => Object -class Delegater +class Delegator def initialize(obj) preserved = ["id", "equal?", "__getobj__"] for t in self.type.ancestors preserved |= t.instance_methods - break if t == Delegater + break if t == Delegator end for method in obj.methods next if preserved.include? method @@ -30,7 +30,7 @@ class Delegater end -class SimpleDelegater<Delegater +class SimpleDelegator<Delegator def initialize(obj) super @@ -41,4 +41,17 @@ class SimpleDelegater<Delegater @obj end + def __setobj__(obj) + @obj = obj + end +end + +# backword compatibility ^_^;;; +Delegater = Delegator +SimpleDelegater = SimpleDelegator + +if __FILE__ == $0 + foo = Object.new + foo = SimpleDelegator.new(foo) + p foo.type # => Object end |