Class: Wayfarer::Middleware::Chain

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

Instance Attribute Summary collapse

Class Method 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

Class Method Details

.emptyObject



8
9
10
# File 'lib/wayfarer/middleware/chain.rb', line 8

def self.empty
  new([])
end

Instance Method Details

#call(task) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/wayfarer/middleware/chain.rb', line 14

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