[Templates-cvs] cvs commit: TT3/lib/Template/Directive Set.pm
cvs@template-toolkit.org
cvs@template-toolkit.org
Mon, 15 Nov 2004 19:36:47 +0000
cvs 04/11/15 19:36:47
Modified: lib/Template/Directive Set.pm
Log:
* test implementation with new framework
Revision Changes Path
1.2 +22 -16 TT3/lib/Template/Directive/Set.pm
Index: Set.pm
===================================================================
RCS file: /template-toolkit/TT3/lib/Template/Directive/Set.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Set.pm 2004/11/10 18:26:30 1.1
+++ Set.pm 2004/11/15 19:36:47 1.2
@@ -17,7 +17,7 @@
# modify it under the same terms as Perl itself.
#
# REVISION
-# $Id: Set.pm,v 1.1 2004/11/10 18:26:30 abw Exp $
+# $Id: Set.pm,v 1.2 2004/11/15 19:36:47 abw Exp $
#
#========================================================================
@@ -25,33 +25,39 @@
use strict;
use warnings;
-use Template::Constants qw( DECLINE ERROR );
use Template::Directive;
use base qw( Template::Directive );
-our $VERSION = sprintf("%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/);
+our $VERSION = sprintf("%d.%02d", q$Revision: 1.2 $ =~ /(\d+)\.(\d+)/);
our $ERROR = '';
+our $KEYWORD = 'SET';
-
# TODO: $parent->accept($self->element())
# OR: $self->element($expr, $parent) (calls $parent->accept($elem))
# OR: $self->attach($parent, $self->element());
sub parse {
- my ($self, $textref, $handler, $keyword) = @_;
- $keyword ||= 'GET';
+ my ($self, $textref, $handler, $match) = @_;
+ my ($expr, @set);
- my $expr = $handler->parse_expression($textref)
- || return $self->decline("$keyword expects an expression");
-
- return $handler->accept($self->element($expr));
-}
+ my $parser = $match->{ parser }
+ || return $self->error('no parser defined');
-sub element {
- my ($self, $expr) = @_;
- return [ get => $expr ];
-}
+ while ($expr = $parser->parse_assign($textref, $match)) {
+ push(@set, $expr);
+ }
+
+ return $self->error($parser->error())
+ unless $parser->declined();
+ return $self->error( 'missing assignment(s) after ',
+ $self->keyword($match) )
+ unless @set;
+
+ unshift(@set, 'set');
+
+ return $handler->expr(\@set);
+}
1;
@@ -82,7 +88,7 @@
=head1 VERSION
-$Revision: 1.1 $
+$Revision: 1.2 $
=head1 COPYRIGHT