| Short description: |
selectively include (import) methods from modules |
| Category: |
Library/module |
| Status: |
beta |
| Created: |
2008-03-12 15:11:25 GMT |
| Last update: |
2008-03-12 15:11:25 GMT |
| Owner: |
Greg Weber
(Projects of this owner) |
| Homepage: |
http://module-import.rubyforge.org/ |
| Download: |
http://rubyforge.org/frs/?group_id=5754
|
| License: |
BSD-type |
| Dependency: |
|
| Description: |
== Summary
selectively include module methods
== Author and License
Copyright (c) 2008 Greg Weber, http://gregweber.info
Licensed under the MIT license
== Usage
require 'rubygems'
require 'module-import'
module Foo
def foo; 'foo' end
def bar; 'bar' end
end
class Importer
import Foo, :bar
end
Importer.new.bar # => 'bar'
Importer.new.foo # => # NoMethodError
class Importer
import Foo, :not_defined # => #not_defined not found in Foo (ImportError)
end
Giving no methods (or all methods) should behave the same as a normal include
class Importer2
import Foo # same as import Foo, :foo, :bar
end
Importer2.new.bar # => 'bar'
Importer2.new.foo # => 'foo'
However, there is one important difference. New changes in the included module will not effect the class.
module Foo
undef_method :foo
def bar; fail end
end
Importer2.new.bar # => 'bar'
Importer2.new.foo # => 'foo'
== Install
gem install module-import
== Source
=== browser
http://github.com/gregwebs/module-import/tree/master
=== repository
git clone git://github.com/gregwebs/module-import.git
== Homepage
http://gregweber.info/projects/module-import.html
== RDoc documentation
included with the gem
== Notes
=== Testing
4:1 test:code ratio, I think I have all the corner cases covered. In particular, this does not break inheritance and everything works the same for importing into a module as it does for importing into class.
=== Implementation
Includes a duplicate of the module that has methods removed
|