Changed default match to use path instead of result
[catagits/Catalyst-Runtime.git] / lib / Catalyst / DispatchType / Default.pm
index 4825647..faffca1 100644 (file)
@@ -3,16 +3,54 @@ package Catalyst::DispatchType::Default;
 use strict;
 use base qw/Catalyst::DispatchType/;
 
-sub prepare_action {
-    my ($self, $c, $path) = @_;
-    return if $path =~ m!/!; # Not at root yet, wait for it ...
-    my $result = @{$c->get_action('default', $c->req->path, 1) || []}[-1];
+=head1 NAME
+
+Catalyst::DispatchType::Default - Default DispatchType
+
+=head1 SYNOPSIS
+
+See L<Catalyst>.
+
+=head1 DESCRIPTION
+
+=head1 METHODS
+
+=over 4
+
+=item $self->match( $c, $path )
+
+=cut
+
+sub match {
+    my ( $self, $c, $path ) = @_;
+    return if $path =~ m!/!;    # Not at root yet, wait for it ...
+    my $result = @{ $c->get_action( 'default', $c->req->path, 1 ) || [] }[-1];
+
+    # Find default on namespace or super
     if ($result) {
         $c->action( $result->[0] );
         $c->namespace( $c->req->path );
         $c->req->action('default');
+        # default methods receive the controller name as the first argument
+        unshift @{ $c->req->args }, $path;
         $c->req->match('');
+        return 1;
     }
+    return 0;
 }
 
+=back
+
+=head1 AUTHOR
+
+Matt S Trout
+Sebastian Riedel, C<sri@cpan.org>
+
+=head1 COPYRIGHT
+
+This program is free software, you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=cut
+
 1;