X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-View-Component-SubInclude.git;a=blobdiff_plain;f=lib%2FCatalyst%2FView%2FComponent%2FSubInclude.pm;h=dd0caeaeb23e7be5663a08c1f49a780f21d0c1b1;hp=0585a4c8ec064b09c55cde1dd3006c6019fa494a;hb=f97c716560e114d118695339a200fe5a7e09e9e5;hpb=1869d78137e571f1fa67ae71818501845546b5a9 diff --git a/lib/Catalyst/View/Component/SubInclude.pm b/lib/Catalyst/View/Component/SubInclude.pm index 0585a4c..dd0caea 100644 --- a/lib/Catalyst/View/Component/SubInclude.pm +++ b/lib/Catalyst/View/Component/SubInclude.pm @@ -2,9 +2,11 @@ package Catalyst::View::Component::SubInclude; use Moose::Role; use Carp qw/croak/; -use Scalar::Util qw/weaken/; +use Catalyst::Utils (); use namespace::clean -except => 'meta'; +with 'Catalyst::Component::ContextClosure'; + =head1 NAME Catalyst::View::Component::SubInclude - Use subincludes in your Catalyst views @@ -122,11 +124,9 @@ around 'new' => sub { before 'render' => sub { my ($self, $c, @args) = @_; - - weaken $c; - $c->stash->{subinclude} = sub { $self->_subinclude( $c, @_ ) }; - $c->stash->{subinclude_using} = sub { $self->_subinclude_using( $c, @_ ) }; + $c->stash->{subinclude} = $self->make_context_closure(sub { $self->_subinclude( @_ ) }, $c); + $c->stash->{subinclude_using} = $self->make_context_closure(sub { $self->_subinclude_using( @_ ) }, $c); }; sub set_subinclude_plugin { @@ -144,7 +144,8 @@ sub _subinclude { sub _subinclude_using { my ($self, $c, $plugin, @args) = @_; $plugin = $self->_subinclude_plugin_class_name($plugin); - $plugin->generate_subinclude( $c, @args ); + my $plugin_config = Catalyst::Utils::merge_hashes($self->config->{subinclude}->{ALL}||{}, $self->config->{subinclude}->{$plugin}||{}); + $plugin->new($plugin_config)->generate_subinclude( $c, @args ); } sub _subinclude_plugin_class_name {