3 # $Release Version: 1.1$
5 # $Date: 2002/02/01 06:36:19 $
6 # by Keiju ISHITSUKA(keiju@ishitsuka.com)
7 # original definition by delegator.rb
14 # def_delegators("@out", "printf", "print")
15 # def_delegators(:@in, :gets)
16 # def_delegator(:@contents, :[], "content_at")
24 # g.extend SingleForwardable
25 # g.def_delegator("@out", :puts)
37 def def_instance_delegators(accessor, *methods)
39 def_instance_delegator(accessor, method)
43 def def_instance_delegator(accessor, method, ali = method)
44 accessor = accessor.id2name if accessor.kind_of?(Integer)
45 method = method.id2name if method.kind_of?(Integer)
46 ali = ali.id2name if ali.kind_of?(Integer)
48 module_eval(<<-EOS, "(__FORWARDABLE__)", 1)
49 def #{ali}(*args, &block)
51 #{accessor}.__send__(:#{method}, *args, &block)
53 $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
60 alias def_delegators def_instance_delegators
61 alias def_delegator def_instance_delegator
64 module SingleForwardable
65 def def_singleton_delegators(accessor, *methods)
67 def_singleton_delegator(accessor, method)
71 def def_singleton_delegator(accessor, method, ali = method)
72 accessor = accessor.id2name if accessor.kind_of?(Integer)
73 method = method.id2name if method.kind_of?(Integer)
74 ali = ali.id2name if ali.kind_of?(Integer)
76 instance_eval(<<-EOS, "(__FORWARDABLE__)", 1)
77 def #{ali}(*args, &block)
79 #{accessor}.__send__(:#{method}, *args,&block)
81 $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
88 alias def_delegators def_singleton_delegators
89 alias def_delegator def_singleton_delegator