The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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

Role::TinyCommons::Tree::Node

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.

Role::TinyCommons::Tree::Node

Role::TinyCommons

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.