class Fluffle::Handlers::Dispatcher
Lightweight DSL for defining handler blocks for a given message
Examples
dispatcher = Fluffle::Handlers::Dispatcher.new dispatcher.handle('upcase') { |str| str.upcase } # Also exposed through the `Fluffle::Server#drain` method server.drain do |dispatcher| dispatcher.handle('upcase') { |str| str.upcase } end
Public Class Methods
new() { |self| ... }
click to toggle source
# File lib/fluffle/handlers/dispatcher.rb, line 16 def initialize @routes = [] yield self if block_given? end
Public Instance Methods
call(method:, params:, **_)
click to toggle source
# File lib/fluffle/handlers/dispatcher.rb, line 28 def call(method:, params:, **_) @routes.each do |(pattern, block)| next if pattern != method return block.call(*params) end raise NoMethodError, "Undefined method '#{method}'" end
handle(pattern, &block)
click to toggle source
pattern - Right now just a String that 1-to-1 matches the `method` block - Block to call with the `params`
# File lib/fluffle/handlers/dispatcher.rb, line 24 def handle(pattern, &block) @routes << [pattern, block] end