mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
1d15d5f080
* Other ruby implementations use the spec/ruby directory. [Misc #13792] [ruby-core:82287] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
60 lines
927 B
Ruby
60 lines
927 B
Ruby
require 'delegate'
|
|
module DelegateSpecs
|
|
class Simple
|
|
def pub
|
|
:foo
|
|
end
|
|
|
|
def respond_to_missing?(method, priv=false)
|
|
method == :pub_too ||
|
|
(priv && method == :priv_too)
|
|
end
|
|
|
|
def method_missing(method, *args)
|
|
super unless respond_to_missing?(method, true)
|
|
method
|
|
end
|
|
|
|
def priv(arg=nil)
|
|
yield arg if block_given?
|
|
[:priv, arg]
|
|
end
|
|
private :priv
|
|
|
|
def prot
|
|
:protected
|
|
end
|
|
protected :prot
|
|
end
|
|
|
|
module Extra
|
|
def extra
|
|
:cheese
|
|
end
|
|
|
|
def extra_private
|
|
:bar
|
|
end
|
|
private :extra_private
|
|
|
|
def extra_protected
|
|
:baz
|
|
end
|
|
protected :extra_protected
|
|
end
|
|
|
|
class Delegator < ::Delegator
|
|
attr_accessor :data
|
|
|
|
attr_reader :__getobj__
|
|
def __setobj__(o)
|
|
@__getobj__ = o
|
|
end
|
|
|
|
include Extra
|
|
end
|
|
|
|
class DelegateClass < DelegateClass(Simple)
|
|
include Extra
|
|
end
|
|
end
|