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=881c120e8dbd126fec459affddbc88704e51583a;hp=fb5c9c6ca9662c2bb82db9e2b76e1904f47b89eb;hb=342d21698a97962c51114b6ebc6bb8626511cfc6;hpb=760d121ecfcc1ad7c28342a6912a472fe30e5fe0 diff --git a/lib/Catalyst/Action.pm b/lib/Catalyst/Action.pm index fb5c9c6..881c120 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,18 @@ sub number_of_captures { return $self->attributes->{CaptureArgs}[0] || 0; } +sub scheme { + return exists $_[0]->attributes->{Scheme} ? $_[0]->attributes->{Scheme}[0] : undef; +} + +sub list_extra_info { + my $self = shift; + return { + Args => $self->attributes->{Args}[0], + CaptureArgs => $self->number_of_captures, + } +} + __PACKAGE__->meta->make_immutable; 1; @@ -149,7 +131,7 @@ and so on. This determines how the action is dispatched to. =head2 class Returns the name of the component where this action is defined. -Derived by calling the L +Derived by calling the L method on each component. =head2 code @@ -210,6 +192,14 @@ 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 scheme + +Any defined scheme for the action + =head2 meta Provided by Moose.