X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FView%2FComponent%2FSubInclude.pm;h=fc7d649c3ebd6bf83ef733d185840af0a6cf29fb;hb=b99299baac9c57b106a8fb02795f216088497f04;hp=4bb7f6906986bb77befc4340db63fc73b00da423;hpb=bff1b853c17ad52e468fe8984ab3b18964463c7f;p=catagits%2FCatalyst-View-Component-SubInclude.git diff --git a/lib/Catalyst/View/Component/SubInclude.pm b/lib/Catalyst/View/Component/SubInclude.pm index 4bb7f69..fc7d649 100644 --- a/lib/Catalyst/View/Component/SubInclude.pm +++ b/lib/Catalyst/View/Component/SubInclude.pm @@ -15,11 +15,11 @@ Catalyst::View::Component::SubInclude - Use subincludes in your Catalyst views =head1 VERSION -Version 0.07_03 +Version 0.09 =cut -our $VERSION = '0.07_03'; +our $VERSION = '0.10'; $VERSION = eval $VERSION; =head1 SYNOPSIS @@ -47,10 +47,13 @@ L, so using L in your view is required. Simply put, it's a way to include the output of a Catalyst sub-request somewhere in your page. -It's built in an extensible way so that you're free to use sub-requests, Varnish -ESI (L) or any other +It's built in an extensible way so that you're free to use sub-requests, +Varnish ESI (L) or any other sub-include plugin you might want to implement. An LWP plugin seems useful and -might be developed in the future. +might be developed in the future. If you need to address a resource by it's +public path (i.e. the path part trailing C then you +will need to use L directly, and not this +component. =head1 STASH FUNCTIONS @@ -113,6 +116,12 @@ has 'subinclude_plugin' => ( isa => Str, ); +has subinclude => ( + is => 'ro', + isa => HashRef, + default => sub { {} }, +); + around 'new' => sub { my $next = shift; my $class = shift; @@ -159,19 +168,23 @@ has _subinclude_plugin_class_instance_cache => ( sub _subinclude_plugin_class_instance { my ($self, $plugin) = @_; - my $class = $plugin =~ /::/ ? $plugin : __PACKAGE__ . '::' . $plugin; - my $cache = $self->_subinclude_plugin_class_instance_cache; return $cache->{$plugin} if exists $cache->{$plugin}; my $plugin_config = Catalyst::Utils::merge_hashes( - $self->config->{subinclude}->{ALL}||{}, - $self->config->{subinclude}->{$plugin}||{} + $self->subinclude->{ALL}||{}, + $self->subinclude->{$plugin}||{} ); + my $short_class = $plugin_config->{'class'} ? + delete $plugin_config->{'class'} + : $plugin; + my $class = $short_class =~ /::/ ? + $short_class + : __PACKAGE__ . '::' . $short_class; Class::MOP::load_class($class); - return $cache->{$plugin} = $class->new($plugin_config); + return $cache->{$class} = $class->new($plugin_config); } =head1 SEE ALSO