[Templates-cvs] cvs commit: TT3/lib/Template/Resource Variable.pm
cvs@template-toolkit.org
cvs@template-toolkit.org
Wed, 01 Dec 2004 18:00:30 +0000
cvs 04/12/01 18:00:30
Modified: lib/Template/Resource Variable.pm
Log:
* fixed handling for root dotops
Revision Changes Path
1.6 +22 -16 TT3/lib/Template/Resource/Variable.pm
Index: Variable.pm
===================================================================
RCS file: /template-toolkit/TT3/lib/Template/Resource/Variable.pm,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Variable.pm 2004/11/29 11:39:42 1.5
+++ Variable.pm 2004/12/01 18:00:29 1.6
@@ -15,7 +15,7 @@
# modify it under the same terms as Perl itself.
#
# REVISION
-# $Id: Variable.pm,v 1.5 2004/11/29 11:39:42 abw Exp $
+# $Id: Variable.pm,v 1.6 2004/12/01 18:00:29 abw Exp $
#
#========================================================================
@@ -27,7 +27,7 @@
use Template::Base;
use base qw( Template::Base );
-our $VERSION = sprintf("%d.%02d", q$Revision: 1.5 $ =~ /(\d+)\.(\d+)/);
+our $VERSION = sprintf("%d.%02d", q$Revision: 1.6 $ =~ /(\d+)\.(\d+)/);
our $DEBUG = 0 unless defined $DEBUG;
our $ERROR = '';
our $THROW = 'variable';
@@ -88,20 +88,26 @@
# stashing it in the cache for next time. if still undefined,
# give up and report the variable not found
- $root = $context->{ variable }->{ $name };
- $root = $context->{ variable }->{ $name }
- = $context->find( variables => $name )
- unless defined $root;
-
- return $self->not_found($name)
- unless defined $root;
-
- # call any CODE reference
- if (ref $root eq 'CODE') {
- $root = eval { $root->($args ? @$args : ()) };
- return $self->error($@) if $@;
- return $self->undefined($name)
+ if (ref $name eq 'HASH') {
+ $root = $name->{ root }
+ || return $self->error('unexpected hash reference');
+ }
+ else {
+ $root = $context->{ variable }->{ $name };
+ $root = $context->{ variable }->{ $name }
+ = $context->find( variables => $name )
+ unless defined $root;
+
+ return $self->not_found($name)
unless defined $root;
+
+ # call any CODE reference
+ if (ref $root eq 'CODE') {
+ $root = eval { $root->($args ? @$args : ()) };
+ return $self->error($@) if $@;
+ return $self->undefined($name)
+ unless defined $root;
+ }
}
# send value straight back if there are no more dotop nodes
@@ -735,7 +741,7 @@
=head1 VERSION
-$Revision: 1.5 $
+$Revision: 1.6 $
=head1 COPYRIGHT