Sha256: 4b8711f22b4a7f4f0f07e143df65d3b29a6a4f4c03e4cded667bedf2051d5bef
Contents?: true
Size: 742 Bytes
Versions: 1
Compression:
Stored size: 742 Bytes
Contents
class ImportError < Exception; end module Kernel # include a duplicate of the module with all uneeded instance methods removed def import(mod, *meths) include_module_copy = lambda do |block| mod_dup = mod.dup mod_dup.module_eval &block if block include mod_dup end if meths.size == 0 include_module_copy.call(nil) else # get list of methods to remove module ims = mod.instance_methods.map {|m| m.to_sym} if (ims & meths).size != meths.size raise ImportError, "##{(meths - ims).join(' and #')} not found in #{mod}" end ims = ims - meths include_module_copy.call( lambda do ims.each { |meth| remove_method meth } end ) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
module-import-0.1.0 | lib/import.rb |