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

interchange-cvs at icdevgroup.org interchange-cvs at icdevgroup.org
Mon Jul 7 13:35:00 EDT 2003


User:      heins
Date:      2003-07-07 16:35:28 GMT
Modified:  lib/Vend Interpolate.pm
Log:
* Add module-version intrinsic test:

	<input	name=mv_column_op
			type=hidden
			value="[if module-version Text::Query]aq[else]rm[/else][/if]"
			>

* Enhance [PREFIX-alternate] to support

	[PREFIX-alternate]              Defaults to [value mv_item_alternate] or 2 (same)
	[PREFIX-alternate N]            Alternate every N items (same)
	[PREFIX-alternate except_last]  Every time except last in list
	[PREFIX-alternate except_first] Every time except last in list
	[PREFIX-alternate first_only]   Only on the first item
	[PREFIX-alternate last_only]    Only on the last item
	[PREFIX-alternate 0]            Alias for first_only
	[PREFIX-alternate -1]           Alias for except_last

Revision  Changes    Path
2.180     +38 -4     interchange/lib/Vend/Interpolate.pm


rev 2.180, prev_rev 2.179
Index: Interpolate.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Interpolate.pm,v
retrieving revision 2.179
retrieving revision 2.180
diff -u -r2.179 -r2.180
--- Interpolate.pm	7 Jul 2003 05:26:58 -0000	2.179
+++ Interpolate.pm	7 Jul 2003 16:35:27 -0000	2.180
@@ -1,6 +1,6 @@
 # Vend::Interpolate - Interpret Interchange tags
 # 
-# $Id: Interpolate.pm,v 2.179 2003/07/07 05:26:58 mheins Exp $
+# $Id: Interpolate.pm,v 2.180 2003/07/07 16:35:27 mheins Exp $
 #
 # Copyright (C) 2002-2003 Interchange Development Group
 # Copyright (C) 1996-2002 Red Hat, Inc.
@@ -28,7 +28,7 @@
 require Exporter;
 @ISA = qw(Exporter);
 
-$VERSION = substr(q$Revision: 2.179 $, 10);
+$VERSION = substr(q$Revision: 2.180 $, 10);
 
 @EXPORT = qw (
 
@@ -1384,6 +1384,15 @@
 		$op .=	qq%	$operator $comp%
 				if defined $comp;
     }
+    elsif($base =~ /^module.version/) {
+		eval {
+			no strict 'refs';
+			$op = ${"${term}::VERSION"};
+			$op = "q{$op}" unless defined $noop;
+			$op .=	qq%	$operator $comp%
+					if defined $comp;
+		};
+    }
 	elsif($base =~ /^accessor/) {
         if ($comp) {
             $op = qq%$Vend::Cfg->{Accessories}->{$term}%;
@@ -4108,6 +4117,31 @@
 	return $nc;
 }
 
+sub alternate {
+	my ($count, $inc, $end) = @_;
+
+	if(! length($inc)) {
+		$inc ||= $::Values->{mv_item_alternate} || 2;
+	}
+
+	return $count % $inc if $inc >= 1;
+
+	my $status;
+	if($inc == -1 or $inc eq 'except_last') {
+		$status = 1 unless $count - 1 == $end;
+	}
+	elsif($inc eq '0' or $inc eq 'first_only') {
+		$status = 1 if $count == 1;
+	}
+	elsif($inc eq 'except_first') {
+		$status = 1 unless $count == 1;
+	}
+	elsif('last_only') {
+		$status = 1 if $count - 1 == $end;
+	}
+	return ! $status;
+}
+
 sub iterate_array_list {
 	my ($i, $end, $count, $text, $ary, $opt_select, $fh, $opt) = @_;
 #::logDebug("passed opt=" . ::uneval($opt));
@@ -4216,7 +4250,7 @@
 
 	    $run = $text;
 		$run =~ s#$B$QR{_alternate}$E$QR{'/_alternate'}#
-				  $count % ($1 || $::Values->{mv_item_alternate} || 2)
+						  alternate($count, $1, $end)
 				  							?	pull_else($2)
 											:	pull_if($2)#ige;
 		1 while $run =~ s#$IB$QR{_param_if}$IE[-_]param\1\]#
@@ -4380,7 +4414,7 @@
 
 		$run = $text;
 		$run =~ s#$B$QR{_alternate}$E$QR{'/_alternate'}#
-				  ($i + 1) % ($1 || $::Values->{mv_item_alternate} || 2)
+						  alternate($i + 1, $1, $end)
 				  							?	pull_else($2)
 											:	pull_if($2)#ge;
 		tag_labeled_data_row($code,\$run);







More information about the interchange-cvs mailing list