Class: Wayfarer::Middleware::Chain

Inherits:
Struct
  • Object
show all
Defined in:
lib/wayfarer/middleware/chain.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#middlewaresObject

Returns the value of attribute middlewares

Returns:

  • (Object)

    the current value of middlewares



5
6
7
# File 'lib/wayfarer/middleware/chain.rb', line 5

def middlewares
  @middlewares
end

Instance Method Details

#call(task) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/wayfarer/middleware/chain.rb', line 6

def call(task)
  traverse = lambda do |i|
    if middlewares[i]
      middlewares[i].call(task) { traverse.call(i + 1) }
    elsif block_given?
      yield
    end
  end

  traverse.call(0)
end