X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FDispatchType%2FRegex.pm;h=354fe3303d103253e7b4e121cbd00e2fde5dfce3;hb=6ab73369947422004890abb05035c491b086283f;hp=0b6f97c882229c4e81b590e29285d8249c7a72cf;hpb=b9b89145c40b01ae04dc483f4f29c02cf08725be;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/DispatchType/Regex.pm b/lib/Catalyst/DispatchType/Regex.pm index 0b6f97c..354fe33 100644 --- a/lib/Catalyst/DispatchType/Regex.pm +++ b/lib/Catalyst/DispatchType/Regex.pm @@ -148,13 +148,15 @@ sub uri_for_action { $re =~ s/^\^//; $re =~ s/\$$//; my $final = '/'; - my @captures = @$captures; + my @captures = map { s/([^A-Za-z0-9\-_.!~*'()])/$URI::Escape::escapes{$1}/go; $_; } @$captures; while (my ($front, $rest) = split(/\(/, $re, 2)) { + last unless defined $rest; ($rest, $re) = Text::Balanced::extract_bracketed("(${rest}", '('); next REGEX unless @captures; $final .= $front.shift(@captures); } + $final .= $re; next REGEX if @captures; return $final; }