(map { $_ => $_ } ( 'gt', 'lt', 'eq', 'ne', 'ge', 'le' )),
);
-sub conditional_passes
+sub _conditional_passes
{
my $self = shift;
my ($context) = @_;
return 0 unless $name =~ /\S/;
my $val = $context->param($name);
- $val = @{$val} while UNIVERSAL::isa($val, 'ARRAY');
- $val = ${$val} while UNIVERSAL::isa($val, 'SCALAR');
+ $val = @{$val} while ref $val eq 'ARRAY';
+ $val = ${$val} while ref $val eq 'SCALAR';
my $value = $context->get($self, 'VALUE');
if (defined $value)
? $isOp{$op}
: '==';
- # Force numerical context on both values;
- $value *= 1;
- $val *= 1;
-
my $res;
for ($op)
{
/^ge$/ && do { $res = ($val ge $value); last };
/^le$/ && do { $res = ($val le $value); last };
- die "Unknown operator in conditional resolve", $/;
+ die "Unknown operator '$op' in conditional resolve", $/;
}
- return 0 unless $res;
+ return $res && 1;
}
- elsif (my $is = uc $context->get($self, 'IS'))
+
+ my $istrue = $val && 1;
+
+ my $is = uc($context->get($self, 'IS') || 'TRUE');
+ if ($is eq 'TRUE')
{
- my $istrue = $val && 1;
- if ($is eq 'TRUE')
- {
- return 0 unless $istrue;
- }
- else
- {
- warn "Conditional 'is' value was [$is], defaulting to 'FALSE'" . $/
- if $is ne 'FALSE';
+ return 0 unless $istrue;
+ }
+ else
+ {
+ warn "Conditional 'is' value was [$is], defaulting to 'FALSE'" . $/
+ if $is ne 'FALSE' && $^W;
- return 0 if $istrue;
- }
+ return 0 if $istrue;
}
return 1;
my $self = shift;
my ($context) = @_;
- return 1 unless $self->conditional_passes($context);
+ return 1 unless $self->_conditional_passes($context);
return $self->iterate_over_children($context);
}
-sub max_of
-{
- my $self = shift;
- my ($context, $attr) = @_;
-
- return 0 unless $self->conditional_passes($context);
-
- return $self->SUPER::max_of($context, $attr);
-}
-
-sub total_of
-{
- my $self = shift;
- my ($context, $attr) = @_;
-
- return 0 unless $self->conditional_passes($context);
-
- return $self->SUPER::total_of($context, $attr);
-}
+#sub max_of
+#{
+# my $self = shift;
+# my ($context, $attr) = @_;
+#
+# return 0 unless $self->_conditional_passes($context);
+#
+# return $self->SUPER::max_of($context, $attr);
+#}
+#
+#sub total_of
+#{
+# my $self = shift;
+# my ($context, $attr) = @_;
+#
+# return 0 unless $self->_conditional_passes($context);
+#
+# return $self->SUPER::total_of($context, $attr);
+#}
1;
__END__
=head1 INHERITANCE
-Excel::Template::Container
+L<CONTAINER|Excel::Template::Container>
=head1 ATTRIBUTES
=item * NAME
-This is the name of the parameter to be testing. It is resolved like any other
-parameter.
+This is the name of the parameter to test. It is resolved like any other parameter name. (q.v. L<VAR|Excel::Template::Element::Var> for more info.)
=item * VALUE
-If VALUE is set, then a comparison operation is done. The value of NAME is
-compared to VALUE using the value of OP.
+If VALUE is set, then a comparison operation is done. The value of NAME is compared to VALUE using the value of OP.
=item * OP
-If VALUE is set, then this is checked. If it isn't present, then '==' (numeric
-equality) is assumed. OP must be one of the numeric comparison operators or the
-string comparison operators. All 6 of each kind is supported.
+If VALUE is set, then this is checked. If it isn't present, then '==' (numeric equality) is assumed. OP must be one of Perl the numeric comparison operators or the string comparison operators. All 6 of each kind is supported.
+
+B<Note>: If you want to use < or <=, you must instead use < or <=. This is to make sure it will parse with L<XML::Parser>. You should not need to use > or >= instead of > and >=, respectively.
=item * IS
-If VALUE is not set, then IS is checked. IS is allowed to be either "TRUE" or
-"FALSE". The boolean value of NAME is checked against IS.
+If VALUE is not set, then IS is checked. IS is allowed to be either "TRUE" or "FALSE". The boolean value of NAME is checked against IS.
-=back 4
+=back
=head1 CHILDREN
... Children here
</if>
-In the above example, the children will be executed if the value of __ODD__
-(which is set by the LOOP node) is false. So, for all even iterations.
+In the above example, the children will be executed if the value of __ODD__ (which is set by the L<LOOP|Excel::Template::Container::Loop> node) is false. So, for all even iterations.
=head1 AUTHOR
=head1 SEE ALSO
-LOOP
+L<LOOP|Excel::Template::Container::Loop>, L<VAR|Excel::Template::Element::Var>
=cut