lib/watchmaker.rb in watchmaker-0.0.1 vs lib/watchmaker.rb in watchmaker-0.1.0

- old
+ new

@@ -1,76 +1,11 @@ # encoding: UTF-8 require "watchmaker/version" +require "watchmaker/configuration" +require "watchmaker/learner" +require "watchmaker/constructor" module Watchmaker # :nodoc: - - # Attribute accessors to hold profile mappings. - # - mattr_accessor :profiles - - # Learn a new profile. - # - def self.learn(profile, options = {}, &block) - - # Initialize the profiles unless they exist. - # - @@profiles = {} unless @@profiles - - # Add the block to the list of known profiles. - # - @@profiles[profile] = { - :options => options, - :block => block - } - - end - - # Contruct a profile based on lambda. - # - def self.construct(profile) - - # Store created objects. - # - objects = [] - - # If a profile exists, call the proc we've stored; if not, raise. - # - if selected_profile = @@profiles[profile] - - if options = selected_profile[:options] - - # For any supplied factories, create them. - # - if factories = options[:factories] - factories.each do |factory| - objects << Factory.create(factory.to_sym) - end - end - - # For any supplied watchmakers, create them. - # - if watchmakers = options[:watchmakers] - watchmakers.each do |watchmaker| - objects << Watchmaker.construct(watchmaker.to_sym) - end - end - - end - - # Run the supplied block. - # - if block = selected_profile.delete(:block) - objects << block.call(objects) - end - - # Return objects. - # - objects - - else - raise "#{profile} is not a valid profile" - end - - end - + include Learner + include Constructor end