[Jifty-commit] r3267 - in Template-Declare: lib/Template
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Sun May 20 15:26:23 EDT 2007
Author: jesse
Date: Sun May 20 15:26:22 2007
New Revision: 3267
Modified:
Template-Declare/ (props changed)
Template-Declare/lib/Template/Declare.pm
Log:
r56987 at 232: jesse | 2007-05-20 15:25:58 -0400
more cleanup
Modified: Template-Declare/lib/Template/Declare.pm
==============================================================================
--- Template-Declare/lib/Template/Declare.pm (original)
+++ Template-Declare/lib/Template/Declare.pm Sun May 20 15:26:22 2007
@@ -339,6 +339,9 @@
my $show_private = shift || 0;
my @search_packages;
+
+ # If we're being called as a class method on T::D it means "search in any package"
+ # Otherwise, it means search only in this specific package"
if ( $self eq 'Template::Declare' ) {
@search_packages = reverse @{ Template::Declare->roots };
} else {
@@ -347,46 +350,40 @@
foreach my $package (@search_packages) {
next unless ( $package and $package->isa('Template::Declare') );
-
if ( my $coderef = $package->_has_template( $template_name, $show_private ) ) {
return $coderef;
+ } elsif ( $coderef = $package->_has_aliased_template($template_name, $show_private) ) {
+ return $coderef;
}
-
- my $sub = $package->_has_aliased_template($template_name, $show_private);
- return $sub if $sub;
-
}
}
sub _has_aliased_template {
- my $package = shift;
+ my $package = shift;
my $template_name = shift;
- my $show_private = shift;
-
- foreach my $alias_key ( @{ Template::Declare->aliases->{$package} } ) {
- my $alias_info = $package->alias_metadata()->{$alias_key};
- my $alias_prefix = $alias_info->{path};
- my $alias_class = $alias_info->{class};
- my $package_vars = $alias_info->{package_vars};
-
- $template_name = "/$template_name";
-
- if ( $template_name =~ m{$alias_prefix/(.*)$} ) {
- my $dispatch_to_template = $1;
- if ( my $coderef = $alias_class->resolve_template( $dispatch_to_template, $show_private)) {
-
- # We're going to force $self to the aliased class
- return sub {
- no strict 'refs';
-
- local $TEMPLATE_VARS->{$alias_class} = $package_vars;
- &$coderef($alias_class);
- };
- }
+ my $show_private = shift;
+ foreach my $alias_key ( @{ Template::Declare->aliases->{$package} } ) {
+ my $alias_info = $package->alias_metadata()->{$alias_key};
+ my $alias_prefix = $alias_info->{path};
+ my $alias_class = $alias_info->{class};
+ my $package_vars = $alias_info->{package_vars};
+
+ $template_name = "/$template_name";
+
+ if ( $template_name =~ m{$alias_prefix/(.*)$} ) {
+ my $dispatch_to_template = $1;
+ if (my $coderef = $alias_class->resolve_template( $dispatch_to_template, $show_private)) {
+
+ return sub {
+ local $TEMPLATE_VARS->{$alias_class} = $package_vars;
+ &$coderef($alias_class);
+ };
}
}
+
+ }
}
sub _find_template_sub {
@@ -445,8 +442,7 @@
my $template_name = shift;
my $code = shift;
push @{ __PACKAGE__->private_templates()->{$class} }, $template_name;
- _register_template( $class, _template_name_to_private_sub($template_name),
- $code );
+ _register_template( $class, _template_name_to_private_sub($template_name), $code );
}
More information about the Jifty-commit
mailing list