NAME
TPath::AttributeTest - compares an attribute value to another value
VERSION
version 1.007
DESCRIPTION
Implements predicates such as //foo[@a < @b]
or ancestor::*[@bar = 1]
. That is, predicates where an attribute is tested against some value. Actually, there need not be an attribute on either side of the operator since the code was refactored to allow general math in these expressions, so AttributeTest
is now a misnomer. All the following are also acceptable
//foo[1 = 1]
//foo["bar" = 0]
//foo[bar = 1]
//foo[bar = 1 = 1]
The last of these is of questionable utility, but it is parsable. And note that parsing is in effect left-associative, so this expression will be equivalent to
//foo[(bar = 1) = 1]
Expressions which analytically must have a constant value will be evaluated during parsing. If they are necessarily false, an error will be thrown. If they are analytically true, they will be eliminated from the respective step's predicate list, so
//foo[1 = 1]
is logically equivalent to //foo
and in fact will be structurally identical to //foo
, as the predicate will be eliminated during compilation.
This class if for internal consumption only.
ATTRIBUTES
op
The comparison operator between the two values.
left
The left value.
right
The right value.
METHODS
test
The test function applied to the values. This method is constructed in BUILD
and assigned to the attribute test as a singleton method.
Expects a node, an index, and a collection.
ROLES
AUTHOR
David F. Houghton <dfhoughton@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by David F. Houghton.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.