Class: Trailblazer::Activity::TaskWrap::Pipeline
- Inherits:
-
Object
- Object
- Trailblazer::Activity::TaskWrap::Pipeline
- Defined in:
- lib/trailblazer/activity/task_wrap/pipeline.rb
Overview
This “circuit” is optimized for
a) merging speed at run-time, since features like tracing will be applied here.
b) execution speed. Every task in the real circuit is wrapped with one of us.
Defined Under Namespace
Classes: Merge
Instance Attribute Summary collapse
-
#sequence ⇒ Object
readonly
Returns the value of attribute sequence.
Class Method Summary collapse
-
.append(pipe, _, insertion) ⇒ Object
TODO: test me.
- .insert_after(pipe, after_id, insertion) ⇒ Object
- .insert_before(pipe, before_id, insertion) ⇒ Object
Instance Method Summary collapse
- #call(wrap_ctx, original_args) ⇒ Object
-
#initialize(sequence) ⇒ Pipeline
constructor
A new instance of Pipeline.
Constructor Details
#initialize(sequence) ⇒ Pipeline
Returns a new instance of Pipeline.
7 8 9 |
# File 'lib/trailblazer/activity/task_wrap/pipeline.rb', line 7 def initialize(sequence) @sequence = sequence # [[id, task], ..] end |
Instance Attribute Details
#sequence ⇒ Object (readonly)
Returns the value of attribute sequence.
17 18 19 |
# File 'lib/trailblazer/activity/task_wrap/pipeline.rb', line 17 def sequence @sequence end |
Class Method Details
.append(pipe, _, insertion) ⇒ Object
TODO: test me.
35 36 37 |
# File 'lib/trailblazer/activity/task_wrap/pipeline.rb', line 35 def self.append(pipe, _, insertion) # TODO: test me. Pipeline.new(pipe.sequence + [insertion]) end |
.insert_after(pipe, after_id, insertion) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/trailblazer/activity/task_wrap/pipeline.rb', line 27 def self.insert_after(pipe, after_id, insertion) index = pipe.sequence.find_index { |(id, _)| id == after_id } seq = pipe.sequence.dup Pipeline.new(seq.insert(index+1, insertion)) end |
.insert_before(pipe, before_id, insertion) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/trailblazer/activity/task_wrap/pipeline.rb', line 19 def self.insert_before(pipe, before_id, insertion) index = pipe.sequence.find_index { |(id, _)| id == before_id } seq = pipe.sequence.dup Pipeline.new(seq.insert(index, insertion)) end |
Instance Method Details
#call(wrap_ctx, original_args) ⇒ Object
11 12 13 14 15 |
# File 'lib/trailblazer/activity/task_wrap/pipeline.rb', line 11 def call(wrap_ctx, original_args) @sequence.each { |(_id, task)| wrap_ctx, original_args = task.(wrap_ctx, original_args) } return wrap_ctx, original_args end |