Attean::TreeRewriter - Walk and rewrite subtrees
This document describes Attean::TreeRewriter version 0.016
use v5.14; use Attean; my $w = Attean::TreeRewriter->new(); my ($rewritten, $tree) = $w->rewrite($tree, $thunk); if ($rewritten) { ... }
The Attean::TreeRewriter class walks the nodes of query trees and rewrites sub-trees based on handlers that have been registered prior to rewriting.
None.
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.
&code( $tree, $parent_node, $thunk )
$thunk
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.
($handled, $descend, $rewritten)
$handled
$rewritten
$descend
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.
$tree
%seen
$parent
Returns a list ($handled, $tree) with $handled indicating whether rewriting was performed, with the corresponding rewritten $tree.
($handled, $tree)
Please report any bugs or feature requests to through the GitHub web interface at https://github.com/kasei/attean/issues.
http://www.perlrdf.org/
Gregory Todd Williams <gwilliams@cpan.org>
<gwilliams@cpan.org>
Copyright (c) 2014--2016 Gregory Todd Williams. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Attean, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Attean
CPAN shell
perl -MCPAN -e shell install Attean
For more information on module installation, please visit the detailed CPAN module installation guide.