module Roda::RodaPlugins::MatchHookArgs

  1. lib/roda/plugins/match_hook_args.rb

The match_hook_args plugin adds hooks that are called upon a successful match by any of the matchers. It is similar to the match_hook plugin, but it allows for passing the matchers and block arguments for each match method.

plugin :match_hook_args

add_match_hook do |matchers, block_args|
  logger.debug("matchers: #{matchers.inspect}. #{block_args.inspect} yielded.")
end

# Term is an implicit matcher used for terminating matches, and
# will be included in the array of matchers yielded to the match hook
# if a terminating match is used.
term = self.class::RodaRequest::TERM

route do |r|
  r.root do
    # for a request for /
    # matchers: nil, block_args: nil
  end

  r.on 'a', ['b', 'c'], Integer do |segment, id|
    # for a request for /a/b/1
    # matchers: ["a", ["b", "c"], Integer], block_args: ["b", 1]
  end

  r.get 'd' do
    # for a request for /d
    # matchers: ["d", term], block_args: []
  end
end

Methods

Public Class

  1. configure

Public Class methods

configure(app)
[show source]
   # File lib/roda/plugins/match_hook_args.rb
38 def self.configure(app)
39   app.opts[:match_hook_args] ||= []
40 end