diff options
author | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-06-12 19:25:03 +0000 |
---|---|---|
committer | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-06-12 19:25:03 +0000 |
commit | 0486db01fdf823c1efcd7bca1bd20f79cd76fd7a (patch) | |
tree | 11d5d6a8c2c8d0e261715b6b407b3c6eba3e577b /lib/delegate.rb | |
parent | 78f5b54f1b2cdacfc4fab9b37cc71a1d195d9424 (diff) |
* lib/delegate.rb: Delegate !=, eql? and hash [ruby-core:26139]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/delegate.rb')
-rw-r--r-- | lib/delegate.rb | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/delegate.rb b/lib/delegate.rb index dead782bbb..2c1db88a75 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -117,7 +117,7 @@ class Delegator < BasicObject kernel = ::Kernel.dup kernel.class_eval do - [:to_s,:inspect,:=~,:!~,:===,:<=>].each do |m| + [:to_s,:inspect,:=~,:!~,:===,:<=>,:eql?,:hash].each do |m| undef_method m end end @@ -187,7 +187,7 @@ class Delegator < BasicObject # Note: no need to specialize private_methods, since they are not forwarded # - # Returns true if two objects are considered same. + # Returns true if two objects are considered of equal value. # def ==(obj) return true if obj.equal?(self) @@ -195,6 +195,18 @@ class Delegator < BasicObject end # + # Returns true if two objects are not considered of equal value. + # + def !=(obj) + return false if obj.equal?(self) + __getobj__ != obj + end + + def ! + !__getobj__ + end + + # # This method must be overridden by subclasses and should return the object # method calls are being delegated to. # |