NAME
TPath::Attributes::Standard - the standard collection of attributes available to any forester by default
VERSION
version 1.007
DESCRIPTION
TPath::Attributes::Standard
provides the attributes available to all foresters. TPath::Attributes::Standard
is a role which is composed into TPath::Forester.
METHODS
@true
Returns a value, 1, evaluating to true.
@false
Returns a value, undef
, evaluating to false.
@this
Returns the node itself.
@uid
Returns a string representing the unique path in the tree leading to this node. This consists of the index of the node among its parent's children concatenated to the uid of its parent with /
as a separator. The uid of the root node is always /
. That of its second child is /1
. That of the first child of this child is /1/0
. And so on.
@echo(//a)
Returns its parameter.
@leaf
Returns whether the node is without children.
@pick(//foo,1)
Takes a collection and an index and returns the indexed member of the collection.
@size(//foo)
Takes a collection and returns its size.
@size
Returns the size of the tree rooted at the context node.
@width
Returns the number of leave under the context node.
@depth
Returns the number of ancestors of the context node.
@height
Returns the greatest number of generations, inclusive, separating this node from a leaf. Leaf nodes have a height of 1, their parents, 2, etc.
@root
Returns whether the context node is the tree root.
@null
Returns undef
. This is chiefly useful as an argument to other attributes. It will always evaluate as false if used as a predicate.
@index
Returns the index of this node among its parent's children, or -1 if it is the root node.
@log('m1','m2','m3','...')
Prints each message argument to the log stream, one per line, and returns 1. See attribute log_stream
in TPath::Forester.
@id
Returns the id of the current node, if any.
@card(//a)
Returns the cardinality of its parameter. If its parameter evaluates to a list reference, it is the number of items in the list. If it evaluates to a hash reference, it is the number of mappings. The usual parameters are expressions or attributes. Anything which evaluates to undef
will have a cardinality of 0. Anything which does not evaluate to a collection reference will have a cardinality of 1.
//foo[@card(bar) = @card(@quux)]
@at(foo//bar, 'baz', 1, 2, 3)
Returns the value of the named attribute with the given parameters at the first TPath::Context selected by the path parameter evaluated relative to the context node. In the case of
@at(foo//bar, 'baz', 1, 2, 3)
The path parameter is foo//bar
, the relevant attribute is @baz
, and it will be evaluated using the parameters 1, 2, and 3. Other examples:
@at(leaf::*[1], 'id') # the id of the second leaf under this node
@at(*/*, 'height') # the height of the first grandchild of this node
@at(/>foo, 'depth') # the depth of the closest foo node
It is the first TPath::Context selected by the path whose attribute is evaluated, that is, the first node returned, so it is relevant that paths are evaluated left-to-right, depth-first, and post-ordered, descendants being returned before their ancestors.
@all(@a, b, 1, "foo")
True if all its parameters evaluate to true, the standard boolean interpretation being given to collection parameters.
@none(@a, b, 1, "foo")
True if all its parameters evaluate to false, the standard boolean interpretation being given to collection parameters.
@some(@a, b, 1, "foo")
True if any of its parameters evaluates to true, the standard boolean interpretation being given to collection parameters.
@one(@a, b, 1, "foo")
True if only one of its parameters evaluates to true, the standard boolean interpretation being given to collection parameters.
@tcount(@a, b, 1, "foo")
Returns the number of parameters evaluating to true.
@fcount(@a, b, 1, "foo")
Returns the number of parameters evaluating to false.
@var(@a, "key")
=method @v(@a, "key", "value")
Returns the value of the given variable in the context, also setting it if the optional values parameters are supplied. This attribute is accessible as either @var
or @v
my $e = $f->path('/*[@v("size", @tsize)]');
$e->select($some_tree);
say $e->vars->{size}; # prints the number of nodes in the tree
If a single parameter is passed in as the value, this value is stored under the key. If more than one parameter is passed in, a reference to the values array is stored.
@clear_var("key")
Deletes the given value from the expression's variable hash, returning any value deleted.
REQUIRED METHODS
_kids
See TPath::Forester
children
See TPath::Forester
parent
See TPath::Forester
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.