Sha256: 4916a172e59f3d8550710c6d1eea4d8a3a46af1798e2917d4d9d892a51f03e5c
Contents?: true
Size: 583 Bytes
Versions: 9
Compression:
Stored size: 583 Bytes
Contents
module Upperkut module Middleware class Chain attr_reader :items def initialize @items = [] end def add(item) return @items if @items.include?(item) @items << item end def remove(item) @items.delete(item) end 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 end end end
Version data entries
9 entries across 9 versions & 1 rubygems