Switch subinclude generation to being called on instances.
Tomas Doran [Sun, 24 Jan 2010 22:51:25 +0000 (22:51 +0000)]
Instances need to be cached but aren't yet

Makefile.PL
lib/Catalyst/View/Component/SubInclude.pm
lib/Catalyst/View/Component/SubInclude/ESI.pm
lib/Catalyst/View/Component/SubInclude/SubRequest.pm
lib/Catalyst/View/Component/SubInclude/Visit.pm

index 3e8a8dd..5bd0796 100644 (file)
@@ -11,6 +11,7 @@ requires 'Catalyst::Runtime' => '5.80014';
 requires 'Catalyst::Plugin::SubRequest';
 requires 'Moose';
 requires 'Moose::Role';
+requires 'MooseX::Types';
 requires 'Carp';
 requires 'namespace::clean';
 
index 045cb9d..dd0caea 100644 (file)
@@ -145,7 +145,7 @@ sub _subinclude_using {
     my ($self, $c, $plugin, @args) = @_;
     $plugin = $self->_subinclude_plugin_class_name($plugin);
     my $plugin_config = Catalyst::Utils::merge_hashes($self->config->{subinclude}->{ALL}||{}, $self->config->{subinclude}->{$plugin}||{});
-    $plugin->generate_subinclude( $plugin_config, $c, @args );
+    $plugin->new($plugin_config)->generate_subinclude( $c, @args );
 }
 
 sub _subinclude_plugin_class_name {
index 8909f9f..259f8cc 100644 (file)
@@ -55,7 +55,7 @@ common interface for plugins.
 =cut
 
 sub generate_subinclude {
-    my ($class, $config, $c, $path, @params) = @_;
+    my ($self, $c, $path, @params) = @_;
 
     my $uri = $c->uri_for_action( $path, @params );
 
index b931a74..18260dc 100644 (file)
@@ -1,6 +1,7 @@
 package Catalyst::View::Component::SubInclude::SubRequest;
 use Moose;
 use Carp qw/croak/;
+use MooseX::Types::Moose qw/ Bool /;
 use namespace::clean -except => 'meta';
 
 =head1 NAME
@@ -67,9 +68,15 @@ common interface for all plugins.
 
 =cut
 
+has keep_stash => (
+    isa => Bool,
+    is => 'ro',
+    default => 0,
+);
+
 sub generate_subinclude {
-    my ($class, $config, $c, $path, @params) = @_;
-    my $stash = $config->{keep_stash} ? { %{ $c->stash } } : {};
+    my ($self, $c, $path, @params) = @_;
+    my $stash = $self->keep_stash ? { %{ $c->stash } } : {};
 
     croak "subincludes through subrequests require Catalyst::Plugin::SubRequest"
         unless $c->can('sub_request');
index 7ffae03..5cfc85a 100644 (file)
@@ -1,6 +1,7 @@
 package Catalyst::View::Component::SubInclude::Visit;
 use Moose;
 use Carp qw/croak/;
+use MooseX::Types::Moose qw/ Bool /;
 use namespace::clean -except => 'meta';
 
 =head1 NAME
@@ -56,14 +57,20 @@ with the other plugins.
 
 =cut
 
+has keep_stash => (
+    isa => Bool,
+    is => 'ro',
+    default => 0,
+);
+
 sub generate_subinclude {
-    my ($class, $config, $c, $path, @params) = @_;
+    my ($self, $c, $path, @params) = @_;
 
     croak "subincludes through visit() require Catalyst version 5.71000 or newer"
         unless $c->can('visit');
 
     {
-        local $c->{stash} = $config->{keep_stash} ? $c->{stash} : {};
+        local $c->{stash} = $self->keep_stash ? $c->{stash} : {};
         
         local $c->request->{parameters} = 
             ref $params[-1] eq 'HASH' ? pop @params : {};