mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 6ea8746048
			
		
	
	
		6ea8746048
		
	
	
	
	
		
			
			without a problem. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			84 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			R
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			R
		
	
	
	
	
	
|  -- forwardable.rb
 | |
| 						
 | |
|                                                 $Release Version: 1.1 $
 | |
|                                                 $Revision$
 | |
|                                                 $Date$
 | |
| 						Original version by Tosh
 | |
| 
 | |
| =begin
 | |
| 
 | |
| = Forwardable
 | |
| 
 | |
| A Module to define delegations for selected methods to a class.
 | |
| 
 | |
| == Usage
 | |
| 
 | |
| Using through extending the class.
 | |
|   
 | |
|   class Foo
 | |
|     extend Forwardable
 | |
| 
 | |
|     def_delegators("@out", "printf", "print")
 | |
|     def_delegators(:@in, :gets)
 | |
|     def_delegator(:@contents, :[], "content_at")
 | |
|   end
 | |
|   f = Foo.new
 | |
|   f.printf ...
 | |
|   f.gets
 | |
|   f.content_at(1)
 | |
| 
 | |
| == Methods
 | |
| 
 | |
| --- Forwardable#def_instance_delegators(accessor, *methods)
 | |
| 
 | |
|       adding the delegations for each method of ((|methods|)) to
 | |
|       ((|accessor|)).
 | |
| 
 | |
| --- Forwardable#def_instance_delegator(accessor, method, ali = method)
 | |
|       
 | |
|       adding the delegation for ((|method|)) to ((|accessor|)). When
 | |
|       you give optional argument ((|ali|)), ((|ali|)) is used as the
 | |
|       name of the delegation method, instead of ((|method|)).
 | |
| 
 | |
| --- Forwardable#def_delegators(accessor, *methods)
 | |
| 
 | |
|       the alias of ((|Forwardable#def_instance_delegators|)).
 | |
| 
 | |
| --- Forwardable#def_delegator(accessor, method, ali = method)
 | |
|       
 | |
|       the alias of ((|Forwardable#def_instance_delegator|)).
 | |
| 
 | |
| = SingleForwardable
 | |
| 
 | |
| a Module to define delegations for selected methods to an object.
 | |
| 
 | |
| == Usage
 | |
| 
 | |
| Using through extending the object.
 | |
| 
 | |
|   g = Goo.new
 | |
|   g.extend SingleForwardable
 | |
|   g.def_delegator("@out", :puts)
 | |
|   g.puts ...
 | |
| 
 | |
| == Methods
 | |
| 
 | |
| --- SingleForwardable#def_singleton_delegators(accessor, *methods)
 | |
| 
 | |
|       adding the delegations for each method of ((|methods|)) to
 | |
|       ((|accessor|)).
 | |
| 
 | |
| --- SingleForwardable#def_singleton_delegator(accessor, method, ali = method)
 | |
| 
 | |
|       adding the delegation for ((|method|)) to ((|accessor|)). When
 | |
|       you give optional argument ((|ali|)), ((|ali|)) is used as the
 | |
|       name of the delegation method, instead of ((|method|)).
 | |
| 
 | |
| --- SingleForwardable#def_delegators(accessor, *methods)
 | |
| 
 | |
|       the alias of ((|SingleForwardable#def_instance_delegators|)).
 | |
| 
 | |
| --- SingleForwardable#def_delegator(accessor, method, ali = method)
 | |
| 
 | |
|       the alias of ((|SingleForwardable#def_instance_delegator|)).
 | |
| =end
 |