class Jackhammer::MiddlewareCollection

Constants

Entry

Public Class Methods

new() click to toggle source
# File lib/jackhammer/middleware_collection.rb, line 3
def initialize
  @entries = []
end

Public Instance Methods

call(*args, **kwargs, &block) click to toggle source
# File lib/jackhammer/middleware_collection.rb, line 11
def call(*args, **kwargs, &block)
  call_chain = @entries.map(&:instantiate) + [block]

  traverse = proc do |*procargs, **prockwargs|
    call_chain.shift.call(*procargs, **prockwargs, &traverse) unless call_chain.empty?
  end

  traverse.call(*args, **kwargs)
end
use(klass, *args, **kwargs, &block) click to toggle source
# File lib/jackhammer/middleware_collection.rb, line 7
def use(klass, *args, **kwargs, &block)
  @entries << Entry.new(klass: klass, args: args, kwargs: kwargs, block: block)
end