Class: WsdlMapper::Runtime::MiddlewareStack

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/wsdl_mapper/runtime/middleware_stack.rb

Instance Method Summary (collapse)

Constructor Details

- (MiddlewareStack) initialize

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

- (Object) add(name, middleware) Also known as: append

Appends the given middleware to the stack.

Parameters:

  • name (String)
  • middleware (Object, Proc)


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

- (Object) after(target, name, middleware)

Inserts the given middleware after the middleware named target.

Parameters:

  • target (String)
  • name (String)
  • middleware (Object, Proc)

Raises:

  • (ArgumentError)

    if there is no middleware with 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

- (Object) before(target, name, middleware)

Inserts the given middleware before the middleware named target.

Parameters:

  • target (String)
  • name (String)
  • middleware (Object, Proc)

Raises:

  • (ArgumentError)

    if there is no middleware with 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

- (Object) clear

Clears the stack.



15
16
17
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 15

def clear
  @stack = []
end

- (Enumerator) each {|middleware| ... }

Enumerates all middlewares in order

Yield Parameters:

  • middleware (Object, Proc)

Returns:

  • (Enumerator)


82
83
84
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 82

def each(&block)
  @stack.lazy.map(&:middleware).each &block
end

- (Object) execute(inputs)

Calls each middleware in order, by passing the output from the last middleware to the next.

Parameters:

  • inputs (Array)

    Input to the first middleware on the stack

Returns:

  • (Object)

    The output of the last middleware on the stack



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

- (Object, Proc) get(name) Also known as: []

Returns The middleware for name.

Parameters:

  • name (String)

Returns:

  • (Object, Proc)

    The middleware for name.

Raises:

  • (ArgumentError)

    if there is no middleware with this name.



40
41
42
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 40

def get(name)
  @stack[get_position(name)].middleware
end

- (Array<String>) names

Returns The names of the middlewares in order.

Returns:

  • (Array<String>)

    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

- (Object) prepend(name, middleware)

Prepends the given middleware.

Parameters:

  • name (String)
  • middleware (Object, Proc)


57
58
59
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 57

def prepend(name, middleware)
  @stack.unshift Item.new(name, middleware)
end

- (Object) remove(name)

Parameters:

  • name (String)


25
26
27
# File 'lib/wsdl_mapper/runtime/middleware_stack.rb', line 25

def remove(name)
  @stack.delete_if { |item| item.name == name }
end

- (Object) replace(name, middleware) Also known as: []=

Parameters:

  • name (String)

    The name of the middleware item to replace

  • middleware (Object, Proc)

    The new middleware



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