Module: Trailblazer::Activity::DSL::Linear::Strategy::DSL
- Defined in:
- lib/trailblazer/activity/dsl/linear/strategy.rb
Overview
class << self
Class Method Summary collapse
- .append_terminus(sequence, task, normalizers:, **options) ⇒ Object
- .Build(strategy, **options, &block) ⇒ Object
-
.build_circuit_task_for_step(user_step) ⇒ Object
Wraps user_step into a circuit-interface compatible callable, a.k.a.
- .OptionsForSequenceBuilder(strategy_dsl, termini: nil, **user_options) ⇒ Object
-
.process_termini(sequence, termini, **options_for_append_terminus) ⇒ Object
If no :termini were provided by the Strategy user, we use the default strategy_termini.
- .start_sequence(wirings: []) ⇒ Object
Class Method Details
.append_terminus(sequence, task, normalizers:, **options) ⇒ Object
161 162 163 164 |
# File 'lib/trailblazer/activity/dsl/linear/strategy.rb', line 161 def append_terminus(sequence, task, normalizers:, **) # DISCUSS: why are we requiring {:normalizers} here? only for invoking Normalizer.terminus _sequence = Linear::Sequence::Builder.update_sequence_for(:terminus, task, , normalizers: normalizers, sequence: sequence, normalizer_options: {}) end |
.Build(strategy, **options, &block) ⇒ Object
125 126 127 128 129 130 131 |
# File 'lib/trailblazer/activity/dsl/linear/strategy.rb', line 125 def Build(strategy, **, &block) Class.new(strategy) do compile_strategy!(strategy::DSL, normalizers: @state.get(:normalizers), **) class_exec(&block) if block end end |
.build_circuit_task_for_step(user_step) ⇒ Object
Wraps user_step into a circuit-interface compatible callable, a.k.a. “task”.
167 168 169 |
# File 'lib/trailblazer/activity/dsl/linear/strategy.rb', line 167 def build_circuit_task_for_step(user_step) Activity::Circuit::TaskAdapter.for_step(user_step, option: true) end |
.OptionsForSequenceBuilder(strategy_dsl, termini: nil, **user_options) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/trailblazer/activity/dsl/linear/strategy.rb', line 133 def OptionsForSequenceBuilder(strategy_dsl, termini: nil, **) # DISCUSS: instead of calling a separate {initial_sequence} method we could make DSL strategies # use the actual DSL to build up the initial_sequence, somewhere outside? Maybe using {:adds}? , strategy_termini = strategy_dsl.(**) # call Path.options_for_sequence_builder # DISCUSS: passing on Normalizers here is a service, not sure I like it. initial_sequence = process_termini([:sequence], termini || strategy_termini, normalizers: strategy_dsl::Normalizers) { step_interface_builder: method(:build_circuit_task_for_step), adds: [], # DISCUSS: needed? **, **, # this might (and should!) override :track_name etc. sequence: initial_sequence, } # no {:termini} left in options end |
.process_termini(sequence, termini, **options_for_append_terminus) ⇒ Object
If no :termini were provided by the Strategy user, we use the default strategy_termini.
153 154 155 156 157 158 159 |
# File 'lib/trailblazer/activity/dsl/linear/strategy.rb', line 153 def process_termini(sequence, termini, **) termini.each do |task, | sequence = append_terminus(sequence, task, **, **) end sequence end |
.start_sequence(wirings: []) ⇒ Object
119 120 121 122 123 |
# File 'lib/trailblazer/activity/dsl/linear/strategy.rb', line 119 def start_sequence(wirings: []) start_default = Activity::Start.new(semantic: :default) start_event = Linear::Sequence.create_row(task: start_default, id: "Start.default", magnetic_to: nil, wirings: wirings) _sequence = Linear::Sequence[start_event] end |