NAME
Role::TinyCommons::Tree::NodeMethods - Role that provides tree node methods
VERSION
This document describes version 0.126 of Role::TinyCommons::Tree::NodeMethods (from Perl distribution Role-TinyCommons-Tree), released on 2021-05-06.
DESCRIPTION
REQUIRED ROLES
PROVIDED METHODS
ancestors
Return a list of ancestors, from the direct parent upwards to the root.
check
Usage:
$node->check(\%opts)
Check references in a tree: that all children refers back to the parent. Options:
recurse => bool
check_root => bool
If set to true, will also check that parent is undef (meaning this node is a root node).
descendants
Return a list of descendents, from the direct children, to their children's children, and so on until all the leaf nodes.
For example, for this tree:
A
|-- B
| |-- D
| |-- E
| `-- F
`-- C
|-- G
| `-- I
`-- H
the nodes returned for descendants(A)
would be:
B C D E F G H I
descendants_depth_first
Like "descendants", except will return in depth-first order. For example, using the same object in the "descendants" example, descendants_depth_first(A)
will return:
B D E F C G I H
first_node
Usage:
$node->first_node($coderef)
Much like List::Util's first
. Will "walk" the descendant nodes until the first coderef returns true, and return that.
is_first_child
is_first_child_of_type
is_last_child
is_last_child_of_type
is_nth_child
is_nth_child_of_type
is_nth_last_child
is_nth_last_child_of_type
is_only_child
is_only_child_of_type
next_sibling
Return the sibling node directly after this node.
next_siblings
Return all the next siblings of this node, from the one directly after to the last.
prev_sibling
Return the sibling node directly before this node.
prev_siblings
Return all the previous siblings of this node, from the first to the one directly before.
remove
Detach this node from its parent. Also set the parent of this node to undef.
walk
Usage:
$node->walk($coderef);
Call $coderef
for all descendants (this means the self node is not included). $coderef will be passed the node.
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Role-TinyCommons-Tree.
SOURCE
Source repository is at https://github.com/perlancar/perl-Role-TinyCommons-TreeNode.
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/perlancar/perl-Role-TinyCommons-TreeNode/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
SEE ALSO
Code::Includable::Tree::NodeMethods if you want to use the routines in this module without consuming a role.
AUTHOR
perlancar <perlancar@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2021, 2020, 2016 by perlancar@cpan.org.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.