Sha256: ca21f84cfd765c29d0c48f1d252c885283377a71f2126216e58a521169c40208

Contents?: true

Size: 1.51 KB

Versions: 4

Compression:

Stored size: 1.51 KB

Contents

== 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

Version data entries

4 entries across 2 versions & 1 rubygems

Version Path
module-import-0.2.2 README
module-import-0.2.2 ./README
module-import-0.3.0 ./README
module-import-0.3.0 README