Attean::TreeRewriter3pm
Walk and rewrite subtrees
Usage
use v5.14;use Attean;my $w = Attean::TreeRewriter->new();my ($rewritten, $tree) = $w->rewrite($tree, $thunk);if ($rewritten) {...}
Version
This document describes Attean::TreeRewriter version 0.035
Overview
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$thunkis an opaque value passed to"rewrite".The function must return a list
"($handled, $descend, $rewritten)".$handledis a boolean indicating whether the handler function rewrote the sub-tree, which is returned as$rewritten. The$descendboolean value indicates whether the the tree rewriting should continue downwards in the tree.
- "rewrite( $tree, $thunk, \%seen, $parent )"
-
Rewrites the given
$treeusing the registered handler functions.$thunkis passed through to each handler function.%seenis currently unused.$parentis passed through to the handler functions as the value of the pseudo-parent tree node for$tree.Returns a list
"($handled, $tree)"with$handledindicating whether rewriting was performed, with the corresponding rewritten$tree.
Releases
5 releases since Debian 9 (Stretch); the text changed 4 times.