Module: Wukong::DriverMethods
- Included in:
- EventMachineDriver, SpecHelpers::UnitTestDriver
- Defined in:
- lib/wukong/driver.rb
Instance Attribute Summary collapse
-
#dataflow ⇒ Object
Returns the value of attribute dataflow.
-
#settings ⇒ Object
Returns the value of attribute settings.
Instance Method Summary collapse
- #add_serialization(dataflow, direction, label, options) ⇒ Object
- #build_serializer(direction, label, options) ⇒ Object
-
#construct_dataflow(label, options) ⇒ Object
So pretty...
- #driver ⇒ Object
- #finalize_and_stop_dataflow ⇒ Object
- #finalize_dataflow ⇒ Object
- #lookup(label) ⇒ Object
- #lookup_and_build(label, options = {}) ⇒ Object
- #setup_dataflow ⇒ Object
Instance Attribute Details
#dataflow ⇒ Object
Returns the value of attribute dataflow.
4 5 6 |
# File 'lib/wukong/driver.rb', line 4 def dataflow @dataflow end |
#settings ⇒ Object
Returns the value of attribute settings.
6 7 8 |
# File 'lib/wukong/driver.rb', line 6 def settings @settings end |
Instance Method Details
#add_serialization(dataflow, direction, label, options) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/wukong/driver.rb', line 25 def add_serialization(dataflow, direction, label, ) case direction when :to then dataflow.push build_serializer(direction, label, ) when :from then dataflow.unshift build_serializer(direction, label, ) end end |
#build_serializer(direction, label, options) ⇒ Object
21 22 23 |
# File 'lib/wukong/driver.rb', line 21 def build_serializer(direction, label, ) lookup_and_build("#{direction}_#{label}", ) end |
#construct_dataflow(label, options) ⇒ Object
So pretty...
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/wukong/driver.rb', line 50 def construct_dataflow(label, ) dataflow = lookup_and_build(label, ) dataflow = dataflow.respond_to?(:stages) ? dataflow.directed_sort.map{ |name| dataflow.stages[name] } : [ dataflow ] expected_input_model = ([:consumes].constantize rescue nil) || dataflow.first.expected_record_type(:consumes) dataflow.unshift lookup_and_build(:recordize, model: expected_input_model) if expected_input_model expected_output_model = ([:produces].constantize rescue nil) || dataflow.first.expected_record_type(:produces) dataflow.push lookup_and_build(:recordize, model: expected_output_model) if expected_output_model expected_input_serialization = [:from] || dataflow.last.expected_serialization(:from) add_serialization(dataflow, :from, expected_input_serialization, ) if expected_input_serialization expected_output_serialization = [:to] || dataflow.last.expected_serialization(:to) add_serialization(dataflow, :to, expected_output_serialization, ) if expected_output_serialization dataflow.push self end |
#driver ⇒ Object
8 9 10 |
# File 'lib/wukong/driver.rb', line 8 def driver @driver ||= Driver.new(dataflow) end |
#finalize_and_stop_dataflow ⇒ Object
42 43 44 45 46 47 |
# File 'lib/wukong/driver.rb', line 42 def finalize_and_stop_dataflow dataflow.each do |stage| stage.finalize(&driver.advance(stage)) if stage.respond_to?(:finalize) stage.stop end end |
#finalize_dataflow ⇒ Object
36 37 38 39 40 |
# File 'lib/wukong/driver.rb', line 36 def finalize_dataflow dataflow.each do |stage| stage.finalize(&driver.advance(stage)) if stage.respond_to?(:finalize) end end |
#lookup(label) ⇒ Object
12 13 14 15 |
# File 'lib/wukong/driver.rb', line 12 def lookup(label) raise Wukong::Error.new("could not find definition for <#{label}>") unless Wukong.registry.registered?(label.to_sym) Wukong.registry.retrieve(label.to_sym) end |
#lookup_and_build(label, options = {}) ⇒ Object
17 18 19 |
# File 'lib/wukong/driver.rb', line 17 def lookup_and_build(label, = {}) lookup(label).build() end |
#setup_dataflow ⇒ Object
32 33 34 |
# File 'lib/wukong/driver.rb', line 32 def setup_dataflow dataflow.each(&:setup) end |