class Toys::Middleware::Stack

A stack of middleware specs.

Attributes

default_specs[R]

The default set of middleware specs. @return [Array<Toys::Middleware:Spec>]

post_specs[R]

The middleware specs that follow the default set. @return [Array<Toys::Middleware:Spec>]

pre_specs[R]

The middleware specs that precede the default set. @return [Array<Toys::Middleware:Spec>]

Public Class Methods

new(default_specs: nil, pre_specs: nil, post_specs: nil) click to toggle source

@private

# File lib/toys/middleware.rb, line 323
def initialize(default_specs: nil, pre_specs: nil, post_specs: nil)
  @pre_specs = pre_specs || []
  @post_specs = post_specs || []
  @default_specs = default_specs || []
end

Public Instance Methods

==(other) click to toggle source

@private

# File lib/toys/middleware.rb, line 330
def ==(other)
  other.is_a?(Stack) &&
    pre_specs.eql?(other.pre_specs) &&
    default_specs.eql?(other.default_specs) &&
    post_specs.eql?(other.post_specs)
end
Also aliased as: eql?
add(middleware, *args, **kwargs, &block) click to toggle source

Add a middleware spec to the stack, in the default location, which is at the end of pre_specs). See {Toys::Middleware.spec} for a description of the arguments you can pass.

@overload add(name, *args, **kwargs, &block) @overload add(array) @overload add(middleware_object)

# File lib/toys/middleware.rb, line 298
def add(middleware, *args, **kwargs, &block)
  pre_specs.push(Middleware.spec(middleware, *args, **kwargs, &block))
end
build(middleware_lookup) click to toggle source

Build the middleware in this stack.

@return [Array<Toys::Middleware>]

# File lib/toys/middleware.rb, line 318
def build(middleware_lookup)
  (@pre_specs + @default_specs + @post_specs).map { |spec| spec.build(middleware_lookup) }
end
dup() click to toggle source

Duplicate this stack.

@return [Toys::Middleware::Stack]

# File lib/toys/middleware.rb, line 307
def dup
  Stack.new(pre_specs: pre_specs.dup,
            post_specs: post_specs.dup,
            default_specs: default_specs.dup)
end
eql?(other)
Alias for: ==
hash() click to toggle source

@private

# File lib/toys/middleware.rb, line 339
def hash
  [@pre_specs, @default_specs, @post_specs].hash
end