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.

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

TPath::Stringifiable

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.