class Slack::Messenger::PayloadMiddleware::Stack
Attributes
messenger[R]
stack[R]
Public Class Methods
new(messenger)
click to toggle source
# File lib/slack-messenger/payload_middleware/stack.rb, line 10 def initialize messenger @messenger = messenger @stack = [] end
Public Instance Methods
call(payload={})
click to toggle source
# File lib/slack-messenger/payload_middleware/stack.rb, line 28 def call payload={} result = stack.inject payload do |pld, middleware| as_array(pld).flat_map do |p| middleware.call(p) end end as_array(result) end
set(*middlewares)
click to toggle source
# File lib/slack-messenger/payload_middleware/stack.rb, line 15 def set *middlewares middlewares = if middlewares.length == 1 && middlewares.first.is_a?(Hash) middlewares.first else middlewares.flatten end @stack = middlewares.map do |key, opts| PayloadMiddleware.registry.fetch(key).new(*[messenger, opts].compact) end end
Private Instance Methods
as_array(args)
click to toggle source
# File lib/slack-messenger/payload_middleware/stack.rb, line 40 def as_array args if args.respond_to?(:to_ary) args.to_ary else [args] end end