class WsdlMapper::Runtime::MiddlewareStack

Public Class Methods

new() click to toggle source
# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 10
def initialize
  @stack = []
end

Public Instance Methods

[](name)
Alias for: get
[]=(name, middleware)
Alias for: replace
add(name, middleware) click to toggle source

Appends the given `middleware` to the stack. @param [String] name @param [Object, Proc] middleware

# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 48
def add(name, middleware)
  @stack << Item.new(name, middleware)
  middleware
end
Also aliased as: append
after(target, name, middleware) click to toggle source

Inserts the given `middleware` after the middleware named `target`. @param [String] target @param [String] name @param [Object, Proc] middleware @raise [ArgumentError] if there is no middleware with named `target`.

# 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
append(name, middleware)
Alias for: add
before(target, name, middleware) click to toggle source

Inserts the given `middleware` before the middleware named `target`. @param [String] target @param [String] name @param [Object, Proc] middleware @raise [ArgumentError] if there is no middleware with named `target`.

# 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() click to toggle source

Clears the stack.

# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 15
def clear
  @stack = []
end
each(&block) click to toggle source

Enumerates all middlewares in order @yieldparam middleware [Object, Proc] @return [Enumerator]

# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 82
def each(&block)
  @stack.lazy.map(&:middleware).each(&block)
end
execute(inputs) click to toggle source

Calls each middleware in order, by passing the output from the last middleware to the next. @param [Array] inputs Input to the first middleware on the stack @return [Object] The output of the last middleware on the stack

# 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) click to toggle source

@param [String] name @return [Object, Proc] The middleware for `name`. @raise [ArgumentError] if there is no middleware with this `name`.

# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 40
def get(name)
  @stack[get_position(name)].middleware
end
Also aliased as: []
names() click to toggle source

@return [Array<String>] The names of the middlewares in order.

# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 20
def names
  @stack.map(&:name)
end
prepend(name, middleware) click to toggle source

Prepends the given `middleware`. @param [String] name @param [Object, Proc] middleware

# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 57
def prepend(name, middleware)
  @stack.unshift Item.new(name, middleware)
end
remove(name) click to toggle source

@param [String] name

# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 25
def remove(name)
  @stack.delete_if { |item| item.name == name }
end
replace(name, middleware) click to toggle source

@param [String] name The name of the middleware item to replace @param [Object, Proc] middleware The new middleware

# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 31
def replace(name, middleware)
  @stack[get_position(name)] = Item.new name, middleware
  middleware
end
Also aliased as: []=

Private Instance Methods

get_position(name) click to toggle source
# File lib/wsdl_mapper/runtime/middleware_stack.rb, line 97
def get_position(name)
  index = @stack.index { |item| item.name == name }
  raise ArgumentError.new("#{name} not found.") if index.nil?
  index
end