Class: WsdlMapper::Runtime::MiddlewareStack
- Inherits:
-
Object
- Object
- WsdlMapper::Runtime::MiddlewareStack
- Includes:
- Enumerable
- Defined in:
- lib/wsdl_mapper/runtime/middleware_stack.rb
Instance Method Summary collapse
-
#add(name, middleware) ⇒ Object
(also: #append)
Appends the given
middlewareto the stack. -
#after(target, name, middleware) ⇒ Object
Inserts the given
middlewareafter the middleware namedtarget. -
#before(target, name, middleware) ⇒ Object
Inserts the given
middlewarebefore the middleware namedtarget. -
#clear ⇒ Object
Clears the stack.
-
#each {|middleware| ... } ⇒ Enumerator
Enumerates all middlewares in order.
-
#execute(inputs) ⇒ Object
Calls each middleware in order, by passing the output from the last middleware to the next.
-
#get(name) ⇒ Object, Proc
(also: #[])
The middleware for
name. -
#initialize ⇒ MiddlewareStack
constructor
A new instance of MiddlewareStack.
-
#names ⇒ Array<String>
The names of the middlewares in order.
-
#prepend(name, middleware) ⇒ Object
Prepends the given
middleware. - #remove(name) ⇒ Object
- #replace(name, middleware) ⇒ Object (also: #[]=)
Constructor Details
#initialize ⇒ MiddlewareStack
Returns a new instance of MiddlewareStack.
10 11 12 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 10 def initialize @stack = [] end |
Instance Method Details
#add(name, middleware) ⇒ Object Also known as: append
Appends the given middleware to the stack.
48 49 50 51 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 48 def add(name, middleware) @stack << Item.new(name, middleware) middleware end |
#after(target, name, middleware) ⇒ Object
Inserts the given middleware after the middleware named target.
66 67 68 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 66 def after(target, name, middleware) @stack.insert get_position(target) + 1, Item.new(name, middleware) end |
#before(target, name, middleware) ⇒ Object
Inserts the given middleware before the middleware named target.
75 76 77 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 75 def before(target, name, middleware) @stack.insert get_position(target), Item.new(name, middleware) end |
#clear ⇒ Object
Clears the stack.
15 16 17 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 15 def clear @stack = [] end |
#each {|middleware| ... } ⇒ Enumerator
Enumerates all middlewares in order
82 83 84 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 82 def each(&block) @stack.lazy.map(&:middleware).each(&block) end |
#execute(inputs) ⇒ Object
Calls each middleware in order, by passing the output from the last middleware to the next.
90 91 92 93 94 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 90 def execute(inputs) inject(inputs) do |obj, middleware| middleware.call(*obj) end end |
#get(name) ⇒ Object, Proc Also known as: []
Returns The middleware for name.
40 41 42 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 40 def get(name) @stack[get_position(name)].middleware end |
#names ⇒ Array<String>
Returns The names of the middlewares in order.
20 21 22 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 20 def names @stack.map(&:name) end |
#prepend(name, middleware) ⇒ Object
Prepends the given middleware.
57 58 59 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 57 def prepend(name, middleware) @stack.unshift Item.new(name, middleware) end |
#remove(name) ⇒ Object
25 26 27 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 25 def remove(name) @stack.delete_if { |item| item.name == name } end |
#replace(name, middleware) ⇒ Object Also known as: []=
31 32 33 34 |
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 31 def replace(name, middleware) @stack[get_position(name)] = Item.new name, middleware middleware end |