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