class Upperkut::Middleware::Chain

Attributes

items[R]

Public Class Methods

new() click to toggle source
# File lib/upperkut/middleware.rb, line 6
def initialize
  @items = []
end

Public Instance Methods

add(item) click to toggle source
# File lib/upperkut/middleware.rb, line 10
def add(item)
  return @items if @items.include?(item)

  @items << item
end
invoke(*args) { || ... } click to toggle source
# File lib/upperkut/middleware.rb, line 20
def invoke(*args)
  chain = @items.map(&:new)

  traverse_chain = lambda do
    if chain.empty?
      yield
    else
      chain.shift.call(*args, &traverse_chain)
    end
  end

  traverse_chain.call
end
remove(item) click to toggle source
# File lib/upperkut/middleware.rb, line 16
def remove(item)
  @items.delete(item)
end