Class: Trailblazer::Activity::DSL::Linear::VariableMapping::SetVariable

Inherits:
Object
  • Object
show all
Defined in:
lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb

Overview

TODO: * ALL FILTERS and conditions expose circuit-step interface. Call user_filter and set return value as variable on aggregate.

Defined Under Namespace

Classes: Conditioned, Default, Delete, Output, ReadFromAggregate

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(write_name:, filter:, user_filter:, name:) ⇒ SetVariable

Returns a new instance of SetVariable.



92
93
94
95
96
# File 'lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb', line 92

def initialize(write_name:, filter:, user_filter:, name:, **)
  @write_name  = write_name
  @filter      = filter
  @name        = name
end

Instance Attribute Details

#nameObject (readonly)

TODO: used when adding to pipeline, change to to_h



98
99
100
# File 'lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb', line 98

def name
  @name
end

Class Method Details

.call_filter(filter, wrap_ctx, args, circuit_options) ⇒ Object

Call a filter with a Circuit-Step interface.



114
115
116
117
# File 'lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb', line 114

def self.call_filter(filter, wrap_ctx, (args, circuit_options))
  value, _ = filter.(args, **circuit_options) # circuit-step interface
  value
end

.set_variable(value, write_name, wrap_ctx, original_args) ⇒ Object



119
120
121
122
# File 'lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb', line 119

def self.set_variable(value, write_name, wrap_ctx, original_args)
  wrap_ctx[:aggregate][write_name] = value # yes, we're mutating, but this is ok as we're on some private hash.
  wrap_ctx # DISCUSS: could be omitted.
end

.set_variable_for_filter(filter, write_name, wrap_ctx, original_args) ⇒ Object



106
107
108
109
110
111
# File 'lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb', line 106

def self.set_variable_for_filter(filter, write_name, wrap_ctx, original_args)
  value     = call_filter(filter, wrap_ctx, original_args)
  wrap_ctx  = set_variable(value, write_name, wrap_ctx, original_args)

  wrap_ctx
end

Instance Method Details

#call(wrap_ctx, original_args, filter = @filter) ⇒ Object



100
101
102
103
104
# File 'lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb', line 100

def call(wrap_ctx, original_args, filter = @filter)
  wrap_ctx = self.class.set_variable_for_filter(filter, @write_name, wrap_ctx, original_args)

  return wrap_ctx, original_args
end