Class: Pipelined::Pipeline
- Inherits:
-
Object
- Object
- Pipelined::Pipeline
- Defined in:
- lib/pipelined/pipeline.rb
Instance Method Summary collapse
- #call(env, &final) ⇒ Object
- #delete(middleware) ⇒ Object
- #index(middleware) ⇒ Object
- #index!(middleware) ⇒ Object
-
#initialize(*middlewares) ⇒ Pipeline
constructor
A new instance of Pipeline.
- #insert(index, middleware) ⇒ Object
- #insert_after(after, middleware) ⇒ Object
- #insert_before(before, middleware) ⇒ Object
- #replace(replaced, middleware) ⇒ Object
- #size ⇒ Object
- #swap(first, second) ⇒ Object
- #use(middleware) ⇒ Object
Constructor Details
#initialize(*middlewares) ⇒ Pipeline
Returns a new instance of Pipeline.
5 6 7 8 |
# File 'lib/pipelined/pipeline.rb', line 5 def initialize(*middlewares) @middlewares = Array.new(middlewares).flatten @uniqed = false end |
Instance Method Details
#call(env, &final) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/pipelined/pipeline.rb', line 15 def call(env, &final) final ||= ->(mod_env) { mod_env } uniq_middlewares!.reverse .reduce(final) { |acc, elem| ->(mod_env) { elem.new(acc, mod_env).call } } .call(env) end |
#delete(middleware) ⇒ Object
63 64 65 |
# File 'lib/pipelined/pipeline.rb', line 63 def delete(middleware) @middlewares.delete(middleware) end |
#index(middleware) ⇒ Object
27 28 29 |
# File 'lib/pipelined/pipeline.rb', line 27 def index(middleware) @middlewares.index(middleware) end |
#index!(middleware) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/pipelined/pipeline.rb', line 31 def index!(middleware) idx = index(middleware) return idx if idx raise(ArgumentError) end |
#insert(index, middleware) ⇒ Object
38 39 40 41 |
# File 'lib/pipelined/pipeline.rb', line 38 def insert(index, middleware) @uniqed = false @middlewares.insert(index, middleware) end |
#insert_after(after, middleware) ⇒ Object
47 48 49 |
# File 'lib/pipelined/pipeline.rb', line 47 def insert_after(after, middleware) insert(index!(after) + 1, middleware) end |
#insert_before(before, middleware) ⇒ Object
43 44 45 |
# File 'lib/pipelined/pipeline.rb', line 43 def insert_before(before, middleware) insert(index!(before), middleware) end |
#replace(replaced, middleware) ⇒ Object
51 52 53 54 |
# File 'lib/pipelined/pipeline.rb', line 51 def replace(replaced, middleware) @uniqed = false @middlewares[index!(replaced)] = middleware end |
#size ⇒ Object
23 24 25 |
# File 'lib/pipelined/pipeline.rb', line 23 def size uniq_middlewares!.size end |
#swap(first, second) ⇒ Object
56 57 58 59 60 61 |
# File 'lib/pipelined/pipeline.rb', line 56 def swap(first, second) first_idx = index!(first) second_idx = index!(second) @middlewares[first_idx] = second @middlewares[second_idx] = first end |
#use(middleware) ⇒ Object
10 11 12 13 |
# File 'lib/pipelined/pipeline.rb', line 10 def use(middleware) @uniqed = false @middlewares << middleware end |