Class: Trailblazer::Activity::Magnetic::Normalizer

Inherits:
Object
  • Object
show all
Defined in:
lib/trailblazer/activity/dsl/magnetic/builder/normalizer.rb

Overview

One Normalizer instance is called for every DSL call (step/pass/fail etc.) and normalizes/defaults the user options, such as setting ‘:id`, connecting the task’s outputs or wrapping the user’s task via TaskBuilder::Binary in order to translate true/false to ‘Right` or `Left`.

The Normalizer sits in the ‘@builder`, which receives all DSL calls from the Operation subclass.

Defined Under Namespace

Modules: Pipeline

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(task_builder:, default_outputs:, pipeline:, **options) ⇒ Normalizer

Returns a new instance of Normalizer.



18
19
20
21
22
23
# File 'lib/trailblazer/activity/dsl/magnetic/builder/normalizer.rb', line 18

def initialize(task_builder:, default_outputs:, pipeline:, **options)
  @task_builder    = task_builder
  @default_outputs = default_outputs
  @pipeline        = pipeline # TODO: test me.
  freeze
end

Class Method Details

.build(task_builder: Activity::TaskBuilder.method(:Binary), default_outputs: Builder::Path.default_outputs, pipeline: Pipeline, extension: [], **options) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/trailblazer/activity/dsl/magnetic/builder/normalizer.rb', line 9

def self.build(task_builder: Activity::TaskBuilder.method(:Binary), default_outputs: Builder::Path.default_outputs, pipeline: Pipeline, extension:[], **options)
  return new(
    default_outputs: default_outputs,
    extension:       extension,
    task_builder:    task_builder,
    pipeline:        pipeline,
  ), options
end

Instance Method Details

#call(task, options) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/trailblazer/activity/dsl/magnetic/builder/normalizer.rb', line 25

def call(task, options)
  ctx = {
    task:            task,
    options:         options,
    task_builder:    @task_builder,
    default_outputs: @default_outputs,
  }

  signal, (ctx, ) = @pipeline.( [ctx], {} )

  return ctx[:options][:task], ctx[:local_options], ctx[:connection_options], ctx[:sequence_options], ctx[:extension_options]
end