Class: Webmidi::Middleware::Stack
- Inherits:
-
Object
- Object
- Webmidi::Middleware::Stack
show all
- Defined in:
- lib/webmidi/middleware/stack.rb
Defined Under Namespace
Classes: LambdaMiddleware
Instance Method Summary
collapse
Constructor Details
#initialize(&block) ⇒ Stack
Returns a new instance of Stack.
6
7
8
9
10
|
# File 'lib/webmidi/middleware/stack.rb', line 6
def initialize(&block)
@middlewares = []
@app_cache = nil
instance_eval(&block) if block
end
|
Instance Method Details
#build ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/webmidi/middleware/stack.rb', line 22
def build
return @app_cache if @app_cache
endpoint = ->(msg) { msg }
@middlewares.reverse_each do |middleware, options|
current_app = endpoint
endpoint = if middleware.is_a?(Proc)
lambda_adapter(middleware, current_app)
else
middleware.new(current_app, **options)
end
end
@app_cache = endpoint
end
|
#call(message) ⇒ Object
18
19
20
|
# File 'lib/webmidi/middleware/stack.rb', line 18
def call(message)
build.call(message)
end
|
#use(middleware_class_or_proc, **options) ⇒ Object
12
13
14
15
16
|
# File 'lib/webmidi/middleware/stack.rb', line 12
def use(middleware_class_or_proc, **options)
@middlewares << [middleware_class_or_proc, options]
@app_cache = nil
self
end
|