[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