|
NAMEPPIx::Utilities::Node - Extensions to PPI::Node.VERSIONThis document describes PPIx::Utilities::Node version 1.1.0.SYNOPSISuse 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} ) { ... } } DESCRIPTIONThis is a collection of functions for dealing with PPI::Nodes.INTERFACENothing 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 LIMITATIONSPlease report any bugs or feature requests to "bug-ppix-utilities@rt.cpan.org", or through the web interface at <http://rt.cpan.org>.AUTHORElliot Shank "<perl@galumph.com>"COPYRIGHTCopyright (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.
Visit the GSP FreeBSD Man Page Interface. |