Sha256: 27452995a899efa70e4ba7bcc9369cc02060c0d43b790e206370efb988a4afea
Contents?: true
Size: 911 Bytes
Versions: 1
Compression:
Stored size: 911 Bytes
Contents
class Module def package( name, &block ) @__package__ ||= {} return @__package__ unless block_given? @__package__[name.to_sym] = block end def provide_features( base, *selection ) selection.each do |s| base.class_eval( &@__package__[s.to_sym] ) end end def use( package, *selection ) if String === package or Symbol === package package = constant(package) end package.provide_features( self, *selection ) end end # _____ _ # |_ _|__ ___| |_ # | |/ _ \/ __| __| # | | __/\__ \ |_ # |_|\___||___/\__| # =begin test require 'test/unit' class TCModule < Test::Unit::TestCase module MyPackages package :foo do def foo "yes" end end end class Y use MyPackages, :foo end def test_package y = Y.new assert_equal( "yes", y.foo ) end end =end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
facets-1.4.1 | forge/more/codepack.rb |