Class: JobWorkflow::Output

Inherits:
Object
  • Object
show all
Defined in:
lib/job_workflow/output.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(task_outputs: []) ⇒ Output

: (?task_outputs: Array) -> void



25
26
27
28
# File 'lib/job_workflow/output.rb', line 25

def initialize(task_outputs: [])
  self.task_outputs = {}
  task_outputs.each { |task_output| add_task_output(task_output) }
end

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_outputsObject

: () -> 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