From: Tomas Doran Date: Sun, 24 Jan 2010 22:32:20 +0000 (+0000) Subject: Clean up subrequest backend. X-Git-Tag: 0.07_01~9 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-View-Component-SubInclude.git;a=commitdiff_plain;h=c2d8d5b5228548588977a1e49c20f494aba8bb20 Clean up subrequest backend. Call public not private methods in the dispatcher. Work correctly if passed an action object --- diff --git a/lib/Catalyst/View/Component/SubInclude/SubRequest.pm b/lib/Catalyst/View/Component/SubInclude/SubRequest.pm index 1d4cadc..6f5cdfb 100644 --- a/lib/Catalyst/View/Component/SubInclude/SubRequest.pm +++ b/lib/Catalyst/View/Component/SubInclude/SubRequest.pm @@ -3,6 +3,7 @@ use warnings; use strict; use Carp qw/croak/; +use Scalar::Util qw/blessed/; use namespace::clean; =head1 NAME @@ -76,13 +77,13 @@ sub generate_subinclude { croak "subincludes through subrequests require Catalyst::Plugin::SubRequest" unless $c->can('sub_request'); - my $args = ref $params[0] eq 'ARRAY' ? shift @params : []; - my $query = ref $params[-1] eq 'HASH' ? pop @params : {}; + my $query = ref $params[-1] eq 'HASH' ? pop @params : {}; - my $dispatcher = $c->dispatcher; - my ($action) = $dispatcher->_invoke_as_path( $c, $path, $args ); + my $action = blessed($path) + ? $path + : $c->dispatcher->get_action_by_path($path); - my $uri = $c->uri_for( $action, $args, @params ); + my $uri = $c->uri_for( $action, @params ); $c->sub_request( $uri->path, $stash, $query ); }