Class: Dao::Gateway::Pipe
- Inherits:
-
Object
- Object
- Dao::Gateway::Pipe
- Includes:
- Enumerable
- Defined in:
- lib/dao/gateway/pipe.rb
Instance Attribute Summary collapse
-
#processors ⇒ Object
readonly
Returns the value of attribute processors.
Instance Method Summary collapse
-
#initialize ⇒ Pipe
constructor
A new instance of Pipe.
- #initialize_copy(originial_pipe) ⇒ Object
- #insert_processor_at(index, processor) ⇒ Object
- #postprocess(processor) ⇒ Object
- #preprocess(processor) ⇒ Object
- #preprocess_before(processor_type, processor) ⇒ Object
- #process(raw_element, associations) ⇒ Object
Constructor Details
#initialize ⇒ Pipe
Returns a new instance of Pipe.
8 9 10 |
# File 'lib/dao/gateway/pipe.rb', line 8 def initialize @processors = [] end |
Instance Attribute Details
#processors ⇒ Object (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 |