-
-
06 Feb 2021 18:54:32 UTC
- Distribution: Attean
- Module version: 0.030
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues (30)
- Testers (58 / 0 / 4)
- Kwalitee
Bus factor: 1- 66.75% Coverage
- License: perl_5
- Perl: v5.14.0
- Activity
24 month- Tools
- Download (245KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- Algorithm::Combinatorics
- DateTime::Format::W3CDTF
- Exporter::Tiny
- File::Slurp
- HTTP::Negotiate
- IRI
- JSON
- LWP::UserAgent
- List::MoreUtils
- Math::Cartesian::Product
- Module::Pluggable
- Moo
- MooX::Log::Any
- PerlIO::Layers
- Role::Tiny
- Set::Scalar
- Sub::Install
- Sub::Util
- Test::Modern
- Test::Moose
- Test::Roo
- Text::CSV
- Text::Table
- Try::Tiny
- Type::Tiny
- URI::Escape
- URI::NamespaceMap
- UUID::Tiny
- XML::SAX
- namespace::clean
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
Attean::TreeRewriter - Walk and rewrite subtrees
VERSION
This document describes Attean::TreeRewriter version 0.030
SYNOPSIS
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 torewrite
.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--2020 Gregory Todd Williams. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Module Install Instructions
To install Attean, copy and paste the appropriate command in to your terminal.
cpanm Attean
perl -MCPAN -e shell install Attean
For more information on module installation, please visit the detailed CPAN module installation guide.