Sha256: 972f0574d99ed234df5e8349b9a3ec156408ed2d34bc3680fbfaa78e59403f7e
Contents?: true
Size: 1.21 KB
Versions: 2
Compression:
Stored size: 1.21 KB
Contents
module CanTango class Config class Engines sweetload :Order, :Available include Singleton include Enumerable include Order include Available include CanTango::Registry::Hash::InstanceMethods # engine registry is a simple hash def register hash hash.each_pair do |name, engine_class| raise "Class must implement the CanTango::Engine API." unless self.class.valid_engine?(engine_class) raise "Name of engine must be a String or Symbol" if !name.kind_of_label? registered[name.to_s] = engine_class end end def clear! each {|engine| engine.reset! } @registered = nil clear_order! end def each available.each {|engine| yield send(engine) if respond_to?(engine) } end def active? name active.include? name.to_sym end def active_list available.select {|engine| send(engine).on? if respond_to?(engine) } end protected # does it implement the basic Engine API? def self.valid_engine? engine_class [:execute!, :ability].all? {|meth| engine_class.instance_methods.include? meth } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cantango-config-0.2.1 | lib/cantango/config/engines.rb |
cantango-config-0.2.0 | lib/cantango/config/engines.rb |