X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst.pm;h=9398f71618a9b75e358f322d8175244601df27c5;hp=891b7229b04c0ef9934d79cf8722869a4a1753c0;hb=3a6d7f15d1dcc08c06fb2ba77d608b6cf17edd66;hpb=f6462fb02e19e32d54ac0dcb8511d9c07f9276c4 diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 891b722..9398f71 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1632,6 +1632,12 @@ sub uri_for { my $query = ''; + # remove and save fragment if there is one + my $fragment; + if ($args =~ s/(#.+)$//) { + $fragment = $1; + } + if (my @keys = keys %$params) { # somewhat lifted from URI::_query's query_form $query = '?'.join('&', map { @@ -1660,7 +1666,10 @@ sub uri_for { $base =~ s/([^$URI::uric])/$URI::Escape::escapes{$1}/go; $args = encode_utf8 $args; $args =~ s/([^$URI::uric])/$URI::Escape::escapes{$1}/go; - + + # re-attach fragment on the end of everything after adding params + $query .= $fragment if $fragment; + my $res = bless(\"${base}${args}${query}", $class); $res; }