X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FActionChain.pm;h=4f72839798fe637fb2244827759b3eef0ffea443;hp=873e3a8a81d3c9e0f70ffe4df68260f9aa59a585;hb=ec4d72594fb7a701c2f36e85ecf9a680ca1abba2;hpb=d9f0a350554cca79adefd4e97b4982d431f8c914 diff --git a/lib/Catalyst/ActionChain.pm b/lib/Catalyst/ActionChain.pm index 873e3a8..4f72839 100644 --- a/lib/Catalyst/ActionChain.pm +++ b/lib/Catalyst/ActionChain.pm @@ -71,6 +71,17 @@ sub match_captures { } return 1; } +sub match_captures_constraints { + my ($self, $c, $captures) = @_; + my @captures = @{$captures||[]}; + + foreach my $link(@{$self->chain}) { + my @local_captures = splice @captures,0,$link->number_of_captures; + next unless $link->has_captures_constraints; + return unless $link->match_captures_constraints($c, \@local_captures); + } + return 1; +} # the scheme defined at the end of the chain is the one we use # but warn if too many.