package Catalyst::DispatchType::Index;
-use strict;
-use base qw/Catalyst::DispatchType/;
+use Moose;
+extends 'Catalyst::DispatchType';
+no Moose;
=head1 NAME
=head1 METHODS
-=over 4
+=head2 $self->match( $c, $path )
-=item $self->match( $c, $path )
+Check if there's an index action for a given path, and set it up to use it
+if there is; only matches a full URI - if $c->req->args is already set
+this DispatchType is guaranteed not to match.
=cut
sub match {
my ( $self, $c, $path ) = @_;
- return if $path =~ m!/!;
return if @{ $c->req->args };
- my $result = @{ $c->get_action( 'index', $c->req->path ) || [] }[-1];
+ my $result = $c->get_action( 'index', $path );
- # Find default on namespace or super
- if ($result) {
- $c->action( $result->[0] );
- $c->namespace( $c->req->path );
+ if ($result && $result->match($c)) {
+ $c->action($result);
+ $c->namespace( $result->namespace );
$c->req->action('index');
$c->req->match( $c->req->path );
return 1;
return 0;
}
-=back
+=head2 $self->uri_for_action( $action, $captures )
-=head1 AUTHOR
+get a URI part for an action; always returns undef is $captures is set
+since index actions don't have captures
-Sebastian Riedel, C<sri@cpan.org>
+=cut
+
+sub uri_for_action {
+ my ( $self, $action, $captures ) = @_;
+
+ return undef if @$captures;
+
+ return undef unless $action->name eq 'index';
+
+ return "/".$action->namespace;
+}
+
+=head1 AUTHORS
+
+Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
=cut
+__PACKAGE__->meta->make_immutable;
+
1;