Class: Foobara::Value::Processor::Pipeline

Inherits:
Multi
  • Object
show all
Defined in:
foobara-0.6.1/projects/typesystem/projects/value/src/processor/pipeline.rb

Instance Attribute Summary

Attributes inherited from Multi

#prioritize, #processors

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Multi

#applicable?, #error_classes, #initialize, #possible_errors, #processor_names, #register, requires_declaration_data?

Constructor Details

This class inherits a constructor from Foobara::Value::Processor::Multi

Class Method Details

.foobara_manifestObject



8
9
10
11
12
# File 'projects/typesystem/projects/value/src/processor/pipeline.rb', line 8

def foobara_manifest
  # simplecov:disable
  super.merge(processor_type: :pipeline)
  # simplecov:enable
end

Instance Method Details

#process_outcome(old_outcome) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'projects/typesystem/projects/value/src/processor/pipeline.rb', line 15

def process_outcome(old_outcome)
  processors.inject(old_outcome) do |outcome, processor|
    return outcome if outcome.fatal?

    value = outcome.result

    if processor.applicable?(value)
      processor.process_outcome(outcome)
    else
      outcome
    end
  end
end

#process_value(value) ⇒ Object



29
30
31
# File 'projects/typesystem/projects/value/src/processor/pipeline.rb', line 29

def process_value(value)
  process_outcome(Outcome.success(value))
end