class Dao::Gateway::Pipe

Attributes

processors[R]

Public Class Methods

new() click to toggle source
# File lib/dao/gateway/pipe.rb, line 8
def initialize
  @processors = []
end

Public Instance Methods

initialize_copy(originial_pipe) click to toggle source
# File lib/dao/gateway/pipe.rb, line 12
def initialize_copy(originial_pipe)
  @processors = originial_pipe.processors.dup
end
insert_processor_at(index, processor) click to toggle source
# File lib/dao/gateway/pipe.rb, line 24
def insert_processor_at(index, processor)
  @processors.insert(index, processor)
end
postprocess(processor) click to toggle source
# File lib/dao/gateway/pipe.rb, line 16
def postprocess(processor)
  @processors.unshift(processor)
end
preprocess(processor) click to toggle source
# File lib/dao/gateway/pipe.rb, line 20
def preprocess(processor)
  @processors << processor
end
preprocess_before(processor_type, processor) click to toggle source
# File lib/dao/gateway/pipe.rb, line 28
def preprocess_before(processor_type, processor)
  index = @processors.index { |el| el.instance_of? processor_type }
  insert_processor_at(index, processor)
end
process(raw_element, associations) click to toggle source
# File lib/dao/gateway/pipe.rb, line 33
def process(raw_element, associations)
  @data_processed = true

  processors = []

  @processors.all? do |processor|
    processor.prepare(associations, raw_element)

    processors.unshift(processor)

    processor.need_to_continue_lookup?
  end

  processors.inject(raw_element) do |entity, processor|
    processor.process(entity)
  end
end