PPIx::Utilities(3pm) User Contributed Perl Documentation PPIx::Utilities(3pm)NAME
PPIx::Utilities - Extensions to PPI.
VERSION
This document describes PPIx::Utilities version 1.1.0.
SYNOPSIS
This module does nothing but act as a handle for the PPIx-Utilities distribution.
DESCRIPTION
This is a collection of functions for dealing with PPI objects, many of which originated in Perl::Critic. They are organized into modules
by the kind of PPI class they relate to, by replacing the "PPI" at the front of the module name with "PPIx::Utilities", e.g. functionality
related to PPI::Nodes is in PPIx::Utilities::Node.
INTERFACE
None.
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.
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.
perl v5.10.1 2010-12-03 PPIx::Utilities(3pm)
Check Out this Related Man Page
PPIx::Utilities::Node(3) User Contributed Perl Documentation PPIx::Utilities::Node(3)NAME
PPIx::Utilities::Node - Extensions to PPI::Node.
VERSION
This document describes PPIx::Utilities::Node version 1.1.0.
SYNOPSIS
use PPIx::Utilities::Node qw< split_ppi_node_by_namespace >;
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:
#!perl
my $x = blah();
package Foo;
my $y = blah_blah();
{
say 'Whee!';
package Bar;
something();
}
thingy();
package Baz;
da_da_da();
package Foo;
foreach ( blrfl() ) {
...
}
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.
perl v5.16.3 2010-12-02 PPIx::Utilities::Node(3)