finished the scheme matching and uri_for updates
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Action.pm
index b5b2f48..881c120 100644 (file)
@@ -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;
+    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_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;
-#}
-
-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<Catalyst::Component/catalyst_component_name|catalyst_component_name>
+Derived by calling the L<catalyst_component_name|Catalyst::Component/catalyst_component_name>
 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<Chained|Catalyst::DispatchType::Chained> 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.