Class: Dao::Gateway::Pipe

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/dao/gateway/pipe.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePipe

Returns a new instance of Pipe.



8
9
10
# File 'lib/dao/gateway/pipe.rb', line 8

def initialize
  @processors = []
end

Instance Attribute Details

#processorsObject (readonly)

Returns the value of attribute processors.



6
7
8
# File 'lib/dao/gateway/pipe.rb', line 6

def processors
  @processors
end

Instance Method Details

#initialize_copy(originial_pipe) ⇒ Object



12
13
14
# File 'lib/dao/gateway/pipe.rb', line 12

def initialize_copy(originial_pipe)
  @processors = originial_pipe.processors.dup
end

#insert_processor_at(index, processor) ⇒ Object



24
25
26
# File 'lib/dao/gateway/pipe.rb', line 24

def insert_processor_at(index, processor)
  @processors.insert(index, processor)
end

#postprocess(processor) ⇒ Object



16
17
18
# File 'lib/dao/gateway/pipe.rb', line 16

def postprocess(processor)
  @processors.unshift(processor)
end

#preprocess(processor) ⇒ Object



20
21
22
# File 'lib/dao/gateway/pipe.rb', line 20

def preprocess(processor)
  @processors << processor
end

#preprocess_before(processor_type, processor) ⇒ Object



28
29
30
31
# 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) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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