[interchange-cvs] interchange - heins modified lib/Vend/Interpolate.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Tue Dec 24 11:44:00 2002


User:      heins
Date:      2002-12-24 16:43:12 GMT
Modified:  lib/Vend Interpolate.pm
Log:
* Allow % in filter arguments. This could conceivably be a problem for
  someone who had a filter ".%s" or something, but I doubt there will
  be many problems.

  I wish I had come up with a better method for passing args, but
  sometimes ITL doesn't make it easy.

Revision  Changes    Path
2.139     +15 -4     interchange/lib/Vend/Interpolate.pm


rev 2.139, prev_rev 2.138
Index: Interpolate.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Interpolate.pm,v
retrieving revision 2.138
retrieving revision 2.139
diff -u -r2.138 -r2.139
--- Interpolate.pm	8 Dec 2002 06:21:40 -0000	2.138
+++ Interpolate.pm	24 Dec 2002 16:43:12 -0000	2.139
@@ -1,6 +1,6 @@
 # Vend::Interpolate - Interpret Interchange tags
 # 
-# $Id: Interpolate.pm,v 2.138 2002/12/08 06:21:40 mheins Exp $
+# $Id: Interpolate.pm,v 2.139 2002/12/24 16:43:12 mheins Exp $
 #
 # Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -27,7 +27,7 @@
 require Exporter;
 @ISA = qw(Exporter);
 
-$VERSION = substr(q$Revision: 2.138 $, 10);
+$VERSION = substr(q$Revision: 2.139 $, 10);
 
 @EXPORT = qw (
 
@@ -674,7 +674,7 @@
 	for (@filters) {
 		next unless length($_);
 		@args = @passed_args;
-		if(/%/) {
+		if(/^[^.]*%/) {
 			$value = sprintf($_, $value);
 			next;
 		}
@@ -1167,7 +1167,18 @@
 					return $_[0];
 				},
 	'strftime' => sub {
-					return scalar localtime(shift);
+					my $time = shift(@_);
+					shift(@_);
+					my $fmt = shift(@_);
+					while(my $add = shift(@_)) {
+						$fmt .= " $add";
+					}
+					if($fmt) {
+						return POSIX::strftime($fmt, localtime($time));
+					}
+					else {
+						return scalar localtime($time);
+					}
 				},
 	'encode_entities' => sub {
 					return HTML::Entities::encode(shift, $ESCAPE_CHARS::std);