Attean::TreeRewriter(3pm) | User Contributed Perl Documentation | Attean::TreeRewriter(3pm) |
NAME¶
Attean::TreeRewriter - Walk and rewrite subtreesVERSION¶
This document describes Attean::TreeRewriter version 0.021SYNOPSIS¶
use v5.14; use Attean; my $w = Attean::TreeRewriter->new(); my ($rewritten, $tree) = $w->rewrite($tree, $thunk); if ($rewritten) { ... }
DESCRIPTION¶
The Attean::TreeRewriter class walks the nodes of query trees and rewrites sub-trees based on handlers that have been registered prior to rewriting.ROLES¶
None.METHODS¶
- "register_pre_handler( \&code )"
- Register a handler that will be called for each sub-tree during tree
rewriting.
The function will be called as "&code( $tree, $parent_node, $thunk )" where $thunk is an opaque value passed to "rewrite".
The function must return a list "($handled, $descend, $rewritten)". $handled is a boolean indicating whether the handler function rewrote the sub-tree, which is returned as $rewritten. The $descend boolean value indicates whether the the tree rewriting should continue downwards in the tree.
- "rewrite( $tree, $thunk, \%seen, $parent )"
- Rewrites the given $tree using the registered
handler functions. $thunk is passed through to
each handler function. %seen is currently unused.
$parent is passed through to the handler functions
as the value of the pseudo-parent tree node for
$tree.
Returns a list "($handled, $tree)" with $handled indicating whether rewriting was performed, with the corresponding rewritten $tree.
BUGS¶
Please report any bugs or feature requests to through the GitHub web interface at <https://github.com/kasei/attean/issues>.SEE ALSO¶
AUTHOR¶
Gregory Todd Williams "<gwilliams@cpan.org>"COPYRIGHT¶
Copyright (c) 2014--2018 Gregory Todd Williams. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.2019-02-13 | perl v5.28.1 |