Sha256: 832d4b0952be4e695dea422c57b5fbe625a0b4f3ae4d38ced29b25f4ad0e1b92

Contents?: true

Size: 623 Bytes

Versions: 4

Compression:

Stored size: 623 Bytes

Contents

module Domain
  module DomainFactory

    def self.factor(c_methods = [], i_methods = [])
      i_methods, c_methods = Array(i_methods), Array(c_methods).unshift(Domain)
      Module.new{
        # include all class methods first
        c_methods.each{|c_m| include(c_m) }

        # Ensure that classes that are extended will include all instance methods
        define_singleton_method(:extend_object) do |obj|
          if obj.is_a?(Class)
            obj.module_eval{ i_methods.each{|i_m| include(i_m) } }
          end
          super(obj)
        end
      }
    end

  end # module DomainFactory
end # module Domain

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
domain-1.0.0 lib/domain/support/domain_factory.rb
domain-1.0.0.rc4 lib/domain/support/domain_factory.rb
domain-1.0.0.rc3 lib/domain/support/domain_factory.rb
domain-1.0.0.rc2 lib/domain/support/domain_factory.rb