fixed POD error
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index 4d28b83..f013027 100644 (file)
@@ -129,7 +129,7 @@ __PACKAGE__->stats_class('Catalyst::Stats');
 __PACKAGE__->_encode_check(Encode::FB_CROAK | Encode::LEAVE_SRC);
 
 # Remember to update this in Catalyst::Runtime as well!
-our $VERSION = '5.90085';
+our $VERSION = '5.90089_001';
 $VERSION = eval $VERSION if $VERSION =~ /_/; # numify for warning-free dev releases
 
 sub import {
@@ -1498,13 +1498,28 @@ sub uri_for {
             unshift @encoded_args, splice @$captures, $num_captures;
         }
 
-       $path = $c->dispatcher->uri_for_action($action, $captures);
+        # use Devel::Dwarn;Dwarn $captures;
+
+        if($action->has_captures_constraints) {
+          unless($action->match_captures($c, $captures)) {
+            carp "@{$captures} do not match the type constraints in $action";
+          }
+        }
+
+        $path = $c->dispatcher->uri_for_action($action, $captures);
         if (not defined $path) {
             $c->log->debug(qq/Can't find uri_for action '$action' @$captures/)
                 if $c->debug;
             return undef;
         }
         $path = '/' if $path eq '';
+
+        # At this point @encoded_args is the remaining Args (all captures removed).
+        if($action->has_args_constraints) {
+          unless($action->match_args($c,\@encoded_args)) {
+            carp "@encoded_args do not match the type constraints in $action";
+          }
+        }
     }
 
     unshift(@encoded_args, $path);
@@ -1567,6 +1582,9 @@ sub uri_for {
       } @keys);
     }
 
+    warn $base;
+    warn $args;
+    
     my $res = bless(\"${base}${args}${query}", $class);
     $res;
 }
@@ -3904,6 +3922,39 @@ parameter to true.
 
 =item *
 
+C<do_not_decode_query>
+
+If true, then do not try to character decode any wide characters in your
+request URL query or keywords.  Most readings of the relevent specifications
+suggest these should be UTF-* encoded, which is the default that L<Catalyst>
+will use, hwoever if you are creating a lot of URLs manually or have external
+evil clients, this might cause you trouble.  If you find the changes introduced
+in Catalyst version 5.90080+ break some of your query code, you may disable 
+the UTF-8 decoding globally using this configuration.
+
+This setting takes precedence over C<default_query_encoding> and
+C<decode_query_using_global_encoding>
+
+=item *
+
+C<default_query_encoding>
+
+By default we decode query and keywords in your request URL using UTF-8, which
+is our reading of the relevent specifications.  This setting allows one to
+specify a fixed value for how to decode your query.  You might need this if
+you are doing a lot of custom encoding of your URLs and not using UTF-8.
+
+This setting take precedence over C<decode_query_using_global_encoding>.
+
+=item *
+
+C<decode_query_using_global_encoding>
+
+Setting this to true will default your query decoding to whatever your
+general global encoding is (the default is UTF-8).
+
+=item *
+
 C<use_chained_args_0_special_case>
 
 In older versions of Catalyst, when more than one action matched the same path