module Instana::RodaPathTemplateExtractor::RequestMethods

Constants

TERM

Public Instance Methods

if_match(args, &blk) click to toggle source
# File lib/instana/frameworks/roda.rb, line 11
def if_match(args, &blk)
  path = @remaining_path
  captures = @captures.clear

  if match_all(args)
    (env['INSTANA_PATH_TEMPLATE_FRAGMENTS'] ||= []).concat(named_args(args, blk))
    block_result(blk.(*captures))
    env['INSTANA_HTTP_PATH_TEMPLATE'] = env['INSTANA_PATH_TEMPLATE_FRAGMENTS']
      .join('/')
      .prepend('/')
    throw :halt, response.finish
  else
    @remaining_path = path
    false
  end
end
named_args(args, blk) click to toggle source
# File lib/instana/frameworks/roda.rb, line 28
def named_args(args, blk)
  parameters = blk.parameters
  args.map do |a|
    case a
    when String
      a
    when TERM
      nil
    else
      _, name = parameters.pop
      "{#{name}}"
    end
  end.reject { |v| v.nil? }
end