Module: Trailblazer::Activity::DSL::Linear

Includes:
Helper
Defined in:
lib/trailblazer/activity/dsl/linear.rb,
lib/trailblazer/activity/dsl/linear/state.rb,
lib/trailblazer/activity/dsl/linear/helper.rb,
lib/trailblazer/activity/dsl/linear/compiler.rb,
lib/trailblazer/activity/dsl/linear/strategy.rb,
lib/trailblazer/activity/dsl/linear/normalizer.rb,
lib/trailblazer/activity/dsl/linear/variable_mapping.rb

Overview

Implementing a specific DSL, simplified version of the DSL from 2017.

Produces Implementation and Intermediate.

Defined Under Namespace

Modules: Compiler, DSL, Helper, Insert, Normalizer, Search, Strategy, VariableMapping Classes: Sequence, State

Class Method Summary collapse

Methods included from Helper

included

Class Method Details

.Merge(old_seq, new_seq, end_id: "End.success") ⇒ Object

DISCUSS: also Insert



149
150
151
152
153
# File 'lib/trailblazer/activity/dsl/linear.rb', line 149

def Merge(old_seq, new_seq, end_id: "End.success") # DISCUSS: also Insert
  new_seq = strip_start_and_ends(new_seq, end_id: end_id)

  seq = Insert.Prepend(old_seq, new_seq, end_id)
end

.strip_start_and_ends(seq, end_id:) ⇒ Object

TODO: introduce Merge namespace?



154
155
156
157
158
# File 'lib/trailblazer/activity/dsl/linear.rb', line 154

def strip_start_and_ends(seq, end_id:) # TODO: introduce Merge namespace?
  cut_off_index = end_id.nil? ? seq.size : Insert.find_index(seq, end_id) # find the "first" end.

  seq[1..cut_off_index-1]
end

.VariableMapping(input: VariableMapping.default_input, output: VariableMapping.default_output) ⇒ Object

Normalizer-steps to implement :input and :output Returns an Extension instance to be thrown into the ‘step` DSL arguments.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/trailblazer/activity/dsl/linear/variable_mapping.rb', line 7

def self.VariableMapping(input:  VariableMapping.default_input, output: VariableMapping.default_output)
  input =
    VariableMapping::Input::Scoped.new(
      Trailblazer::Option::KW( VariableMapping::filter_for(input) )
    )

  output =
    VariableMapping::Output::Unscoped.new(
      Trailblazer::Option::KW( VariableMapping::filter_for(output) )
    )

  TaskWrap::Extension(
    merge: TaskWrap::VariableMapping.merge_for(input, output, id: input.object_id), # wraps filters: {Input(input), Output(output)}
  )
end