module Roda::RodaPlugins::ParamsCapturing::RequestMethods
def _match_string(str)
capture names if param capturing.
Add the capture names from this string to list of param
def _match_string(str) cap_len = @captures.length if (ret = super) && (pc = @_params_captures) && (cap_len != @captures.length) # Handle use with placeholder_string_matchers plugin pc.concat(str.scan(/(?<=:)\w+/)) end ret end
def _match_symbol(sym)
Add the symbol to the list of param capture names if param capturing.
def _match_symbol(sym) if pc = @_params_captures pc << sym.to_s end super end
def if_match(args)
the matchers.
any captures to the params based on the param capture names added by
the matching, but turn it back off before yielding to the block. Add
If all arguments are strings or symbols, turn on param capturing during
def if_match(args) params = self.params if args.all?{|x| x.is_a?(String) || x.is_a?(Symbol)} pc = @_params_captures = [] end super do |*a| if pc @_params_captures = nil pc.zip(a).each do |k,v| params[k] = v end end params['captures'].concat(a) yield(*a) end end
def params
Lazily initialize captures entry when params is called.
def params ret = super ret['captures'] ||= [] ret end