X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FAction.pm;h=d360d68891d82546c91b7a18af6a5f1f2aab4880;hp=fb5c9c6ca9662c2bb82db9e2b76e1904f47b89eb;hb=ffca3e960f527321fa30c5ffdfe6ffd2a984af59;hpb=760d121ecfcc1ad7c28342a6912a472fe30e5fe0 diff --git a/lib/Catalyst/Action.pm b/lib/Catalyst/Action.pm index fb5c9c6..d360d68 100644 --- a/lib/Catalyst/Action.pm +++ b/lib/Catalyst/Action.pm @@ -65,48 +65,18 @@ sub execute { $self->code->(@_); } -sub match_captures { - my ( $self, $c, $captures ) = @_; - ## It would seem that now that we can match captures, we could remove a lot - ## of the capture_args to args mapping all around. I gave it a go, but was - ## not trival, contact jnap on irc for what I tried if you want to try. - ## return $self->_match_has_expected_capture_args($captures) && - return $self->_match_has_expected_http_method($c->req->method); -} - sub match { - my ( $self, $c ) = @_; - return $self->_match_has_expected_args($c->req->args) && - $self->_match_has_expected_http_method($c->req->method); -} - -sub _match_has_expected_args { - my ($self, $req_args) = @_; - return 1 unless exists $self->attributes->{Args}; - my $args = $self->attributes->{Args}[0]; - return 1 unless defined($args) && length($args); - return scalar( @{$req_args} ) == $args; -} - -sub _match_has_expected_capture_args { - my ($self, $req_args) = @_; - return 1 unless exists $self->attributes->{CaptureArgs}; - my $args = $self->attributes->{CaptureArgs}[0]; - return 1 unless defined($args) && length($args); - return scalar( @{$req_args} ) == $args; + my ( $self, $c ) = @_; + #would it be unreasonable to store the number of arguments + #the action has as its own attribute? + #it would basically eliminate the code below. ehhh. small fish + return 1 unless exists $self->attributes->{Args}; + my $args = $self->attributes->{Args}[0]; + return 1 unless defined($args) && length($args); + return scalar( @{ $c->req->args } ) == $args; } -sub _match_has_expected_http_method { - my ($self, $method) = @_; - my @methods = @{ $self->attributes->{Method} || [] }; - if(scalar @methods) { - my $result = scalar(grep { lc($_) eq lc($method) } @methods) ? 1:0; - return $result; - } else { - ## No HTTP Methods to check - return 1; - } -} +sub match_captures { 1 } sub compare { my ($a1, $a2) = @_; @@ -133,6 +103,14 @@ sub number_of_captures { return $self->attributes->{CaptureArgs}[0] || 0; } +sub list_extra_info { + my $self = shift; + return { + Args => $self->attributes->{Args}[0], + CaptureArgs => $self->number_of_captures, + } +} + __PACKAGE__->meta->make_immutable; 1; @@ -210,6 +188,10 @@ Returns the number of args this action expects. This is 0 if the action doesn't Returns the number of captures this action expects for L actions. +=head2 list_extra_info + +A HashRef of key-values that an action can provide to a debugging screen + =head2 meta Provided by Moose.