module DIY #:nodoc:# class FactoryDef #:nodoc: attr_accessor :name, :target, :class_name, :library def initialize(opts) @name, @target, @library, @auto_require = opts[:name], opts[:target], opts[:library], opts[:auto_require] @class_name = Infl.camelize(@target) @library ||= Infl.underscore(@class_name) if @auto_require end end class Context def construct_factory(key) factory_def = @defs[key] # puts "requiring #{factory_def.library}" require factory_def.library if factory_def.library big_c = get_class_for_name_with_module_delimeters(factory_def.class_name) FactoryFactory.new(big_c) end end class FactoryFactory def initialize(clazz) @class_to_create = clazz end def create(*args) @class_to_create.new(*args) end end end