Class: ActiveHarness::Pipeline::Step

Inherits:
Object
  • Object
show all
Defined in:
lib/active_harness/pipeline/step.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, agent_class = nil, &block) ⇒ Step

Returns a new instance of Step.



6
7
8
9
10
11
# File 'lib/active_harness/pipeline/step.rb', line 6

def initialize(name, agent_class = nil, &block)
  @name        = name
  @agent_class = agent_class
  @stop_if     = nil
  instance_eval(&block) if block_given?
end

Instance Attribute Details

#agent_classObject (readonly)

Returns the value of attribute agent_class.



4
5
6
# File 'lib/active_harness/pipeline/step.rb', line 4

def agent_class
  @agent_class
end

#nameObject (readonly)

Returns the value of attribute name.



4
5
6
# File 'lib/active_harness/pipeline/step.rb', line 4

def name
  @name
end

Instance Method Details

#stop_if(lam = nil) ⇒ Object

DSL (inside block): stop_if ->(result) { … } Getter (external): step.stop_if → lambda or nil



20
21
22
# File 'lib/active_harness/pipeline/step.rb', line 20

def stop_if(lam = nil)
  lam ? @stop_if = lam : @stop_if
end

#transform?Boolean

Transform steps update payload to result.output after execution. Guard steps (stop_if present) and tribunal steps leave payload unchanged.

Returns:

  • (Boolean)


31
32
33
# File 'lib/active_harness/pipeline/step.rb', line 31

def transform?
  !tribunal? && @stop_if.nil?
end

#tribunal?Boolean

True if agent_class is a Tribunal subclass — tribunal steps do not update payload.

Returns:

  • (Boolean)


25
26
27
# File 'lib/active_harness/pipeline/step.rb', line 25

def tribunal?
  @agent_class.is_a?(Class) && @agent_class <= ActiveHarness::Tribunal
end

#use(klass) ⇒ Object

DSL: use TranslationAgent



14
15
16
# File 'lib/active_harness/pipeline/step.rb', line 14

def use(klass)
  @agent_class = klass
end