NAME
PPIx::Utilities::Node - Extensions to PPI::Node.
VERSION
This document describes PPIx::Utilities::Node version 1.1.0.
SYNOPSIS
my
$dom
= PPI::Document->new(
"..."
);
while
(
my
(
$namespace
,
$sub_doms
) =
each
split_ppi_node_by_namespace(
$dom
)
) {
foreach
my
$sub_dom
( @{
$sub_doms
} ) {
...
}
}
DESCRIPTION
This is a collection of functions for dealing with PPI::Nodes.
INTERFACE
Nothing is exported by default.
split_ppi_node_by_namespace($node)
Returns the sub-trees for each namespace in the node as a reference to a hash of references to arrays of PPI::Nodes. Say we've got the following code:
Calling this function on a PPI::Document for the above returns a value that looks like this, using multi-line string literals for the actual code parts instead of PPI trees to make this easier to read:
{
main
=> [
q<
#!perl
my $x = blah();
>
,
],
Foo
=> [
q<
package Foo;
my $y = blah_blah();
{
say 'Whee!';
}
thingy();
>
,
q<
package Foo;
foreach ( blrfl() ) {
...
}
>
,
],
Bar
=> [
q<
package Bar;
something();
>
,
],
Baz
=> [
q<
package Baz;
da_da_da();
>
,
],
}
Note that the return value contains copies of the original nodes, and not the original nodes themselves due to the need to handle namespaces that are not file-scoped. (Notice how the first element for "Foo" above differs from the original code.)
BUGS AND LIMITATIONS
Please report any bugs or feature requests to bug-ppix-utilities@rt.cpan.org
, or through the web interface at http://rt.cpan.org.
AUTHOR
Elliot Shank <perl@galumph.com>
COPYRIGHT
Copyright (c)2009-2010, Elliot Shank <perl@galumph.com>
.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license can be found in the LICENSE file included with this module.