Class: Avocado::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/avocado/middleware.rb

Defined Under Namespace

Classes: DocumentIfConfiguration, DocumentMetadata, ExampleSerialization, IgnoreXhrRequests, RequestSerialization, ResourceSerialization, ResponseSerialization

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMiddleware

Returns a new instance of Middleware.



6
7
8
# File 'lib/avocado/middleware.rb', line 6

def initialize
  @entries = []
end

Instance Attribute Details

#entriesObject

Returns the value of attribute entries.



4
5
6
# File 'lib/avocado/middleware.rb', line 4

def entries
  @entries
end

Class Method Details

.configure {|@chain| ... } ⇒ Object

Yields:

  • (@chain)


27
28
29
30
# File 'lib/avocado/middleware.rb', line 27

def self.configure(&block)
  @chain ||= new
  yield @chain
end

.invoke(*args, &block) ⇒ Object



32
33
34
# File 'lib/avocado/middleware.rb', line 32

def self.invoke(*args, &block)
  @chain.invoke(*args, &block)
end

Instance Method Details

#<<(klass) ⇒ Object



10
11
12
# File 'lib/avocado/middleware.rb', line 10

def <<(klass)
  @entries << klass
end

#invoke(*args, &finally) ⇒ Object



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

def invoke(*args, &finally)
  chain = entries.map(&:new).dup
  traversal = -> (continue = true) do
    return if !continue
    if chain.empty?
      finally.call
    else
      chain.shift.call(*args, &traversal)
    end
  end
  traversal.call
end