GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  PPIX::UTILITIES::NODE (3)

.ds Aq ’

NAME

PPIx::Utilities::Node - Extensions to PPI::Node.

CONTENTS

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.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 PPIX::UTILITIES::NODE (3) 2016-04-03

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.