Class: JobWorkflow::Output
- Inherits:
-
Object
- Object
- JobWorkflow::Output
- Defined in:
- lib/job_workflow/output.rb
Class Method Summary collapse
-
.deserialize(hash) ⇒ Object
: (Hash[String, untyped]) -> Output.
-
.from_hash_array(array) ⇒ Object
: (Array[Hash[untyped, untyped]]) -> Output.
Instance Method Summary collapse
-
#[](task_name) ⇒ Object
: (Symbol | String) -> Array.
-
#add_task_output(task_output) ⇒ Object
: (TaskOutput) -> void.
-
#fetch(task_name:, each_index:) ⇒ Object
: (task_name: Symbol?, each_index: Integer) -> TaskOutput?.
-
#fetch_all(task_name:) ⇒ Object
: (task_name: Symbol?) -> Array.
-
#flat_task_outputs ⇒ Object
: () -> Array.
-
#initialize(task_outputs: []) ⇒ Output
constructor
: (?task_outputs: Array) -> void.
-
#update_task_outputs_from_contexts(context_data_list, workflow) ⇒ Object
: (Array[Hash[String, untyped]], Workflow) -> void.
Constructor Details
Class Method Details
.deserialize(hash) ⇒ Object
: (Hash[String, untyped]) -> Output
19 20 21 |
# File 'lib/job_workflow/output.rb', line 19 def deserialize(hash) new(task_outputs: hash.fetch("task_outputs", []).map { |shash| TaskOutput.deserialize(shash) }) end |
.from_hash_array(array) ⇒ Object
: (Array[Hash[untyped, untyped]]) -> Output
7 8 9 10 11 12 13 14 15 16 |
# File 'lib/job_workflow/output.rb', line 7 def from_hash_array(array) task_outputs = array.map do |hash| normalized_hash = hash.transform_keys(&:to_sym) task_name = normalized_hash[:task_name] each_index = normalized_hash[:each_index] data = normalized_hash[:data] TaskOutput.new(task_name:, each_index:, data:) end new(task_outputs:) end |
Instance Method Details
#[](task_name) ⇒ Object
: (Symbol | String) -> Array
43 44 45 |
# File 'lib/job_workflow/output.rb', line 43 def [](task_name) task_outputs.fetch(task_name.to_sym, []) end |
#add_task_output(task_output) ⇒ Object
: (TaskOutput) -> void
48 49 50 51 |
# File 'lib/job_workflow/output.rb', line 48 def add_task_output(task_output) task_outputs[task_output.task_name] ||= [] task_outputs[task_output.task_name][task_output.each_index] = task_output end |
#fetch(task_name:, each_index:) ⇒ Object
: (task_name: Symbol?, each_index: Integer) -> TaskOutput?
37 38 39 40 |
# File 'lib/job_workflow/output.rb', line 37 def fetch(task_name:, each_index:) fixed_type_task_name = task_name #: Symbol task_outputs.fetch(fixed_type_task_name, [])[each_index] end |
#fetch_all(task_name:) ⇒ Object
: (task_name: Symbol?) -> Array
31 32 33 34 |
# File 'lib/job_workflow/output.rb', line 31 def fetch_all(task_name:) fixed_type_task_name = task_name #: Symbol task_outputs.fetch(fixed_type_task_name, []).compact end |
#flat_task_outputs ⇒ Object
: () -> Array
65 66 67 |
# File 'lib/job_workflow/output.rb', line 65 def flat_task_outputs task_outputs.values.flatten.compact end |
#update_task_outputs_from_contexts(context_data_list, workflow) ⇒ Object
: (Array[Hash[String, untyped]], Workflow) -> void
54 55 56 57 58 59 60 61 62 |
# File 'lib/job_workflow/output.rb', line 54 def update_task_outputs_from_contexts(context_data_list, workflow) context_data_list.each do |context_data| context = Context.deserialize(context_data.merge("workflow" => workflow)) task_output = context.each_task_output next if task_output.nil? add_task_output(task_output) end end |