X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FDispatchType%2FRegex.pm;h=fb1dc7387a8ceebac8709d32477a98305b5e2d0b;hb=83312afd857057c42c753255f804027ce3a76ce9;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..fb1dc73 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; } @@ -168,7 +170,7 @@ Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT -This program is free software, you can redistribute it and/or modify it under +This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut