Provided by: libppix-utilities-perl_1.001000-4_all bug

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.