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=20f3de5a231a6048c069957eaa486b1c59efe341;hb=f97c716560e114d118695339a200fe5a7e09e9e5;hpb=84616d2a8aa249873c1b4b5524234e30956eee9e diff --git a/lib/Catalyst/View/Component/SubInclude.pm b/lib/Catalyst/View/Component/SubInclude.pm index 20f3de5..dd0caea 100644 --- a/lib/Catalyst/View/Component/SubInclude.pm +++ b/lib/Catalyst/View/Component/SubInclude.pm @@ -2,7 +2,10 @@ package Catalyst::View::Component::SubInclude; use Moose::Role; use Carp qw/croak/; -use namespace::clean qw/croak/; +use Catalyst::Utils (); +use namespace::clean -except => 'meta'; + +with 'Catalyst::Component::ContextClosure'; =head1 NAME @@ -10,11 +13,11 @@ Catalyst::View::Component::SubInclude - Use subincludes in your Catalyst views =head1 VERSION -Version 0.04 +Version 0.07 =cut -our $VERSION = '0.04'; +our $VERSION = '0.07'; =head1 SYNOPSIS @@ -104,7 +107,7 @@ in runtime. It expects a fully qualified class name. has 'subinclude_plugin' => ( is => 'rw', - isa => 'ClassName' + isa => 'Str' ); around 'new' => sub { @@ -119,14 +122,11 @@ around 'new' => sub { $self; }; -around 'render' => sub { - my $next = shift; +before 'render' => sub { my ($self, $c, @args) = @_; - - $c->stash->{subinclude} = sub { $self->_subinclude( $c, @_ ) }; - $c->stash->{subinclude_using} = sub { $self->_subinclude_using( $c, @_ ) }; - $self->$next( $c, @args ); + $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 {