Sha256: 15171f9c617033b747e2302135cf1f1e276314f8f20c32ced39cac01a69df444
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
module Wukong # # Holds graphs, supplies `processor` and similar stage template methods # module Universe def find_or_create_class(superklass, klass_name, namespace, &block) klass_name = Gorillib::Inflector.camelize(klass_name.to_s).to_sym if namespace.const_defined?(klass_name) namespace.const_get(klass_name) else namespace.send(:const_set, klass_name, Class.new(superklass, &block)) end end def processor(processor_name, &block) klass = find_or_create_class(Wukong::Processor, processor_name, Wukong::Widget) do register_processor(processor_name) end klass.class_eval(&block) if block_given? klass end def dataflow(name, attrs={}, &block) attrs[:name] = name = name.to_sym dataflow = @dataflows[name] ||= Dataflow.new(:name => name) dataflow.receive!(attrs, &block) dataflow end def workflow(name, attrs={}, &block) attrs[:name] = name = name.to_sym workflow = @workflows[name] ||= Workflow.new(:name => name) workflow.receive!(attrs, &block) workflow end def self.extended(base) base.instance_eval do @dataflows = Hash.new @workflows = Hash.new end end end # Wukong can serve as a universe extend Universe end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
wukong-3.0.0.pre | lib/wukong/universe.rb |