Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

ppix::utilities::node(3pm) [debian man page]

PPIx::Utilities::Node(3pm)				User Contributed Perl Documentation				PPIx::Utilities::Node(3pm)

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.10.1 2010-12-03 PPIx::Utilities::Node(3pm)

Check Out this Related Man Page

PPIx::EditorTools::ReturnObject(3pm)			User Contributed Perl Documentation		      PPIx::EditorTools::ReturnObject(3pm)

NAME
PPIx::EditorTools::ReturnObject - Simple object to return values from PPIx::EditorTools SYNOPSIS
my $brace = PPIx::EditorTools::FindUnmatchedBrace->new->find( code => "package TestPackage; sub x { 1; " ); my $location = $brace->element->location; my $ppi = $brace->element->ppi; DESCRIPTION
Retuning a simple "PPI::Element" from many of the "PPIx::EditorTools" methods often results in the loss of the overall context for that element. "PPIx::EditorTools::ReturnObject" provides an object that can be passed around which retains the overall context. For example, in "PPIx::EditorTools::FindUnmatchedBrace" if the unmatched brace were returned by its "PPI::Structure::Block" the containing "PPI::Document" is likely to go out of scope, thus the "location" method no longer returns a valid location (rather it returns undef). Using the "ReturnObject" preserves the "PPI::Document" and the containing context. METHODS
new() Constructor which should be used by "PPIx::EditorTools". Accepts the following named parameters: ppi A "PPI::Document" representing the (possibly modified) code. code A string representing the (possibly modified) code. element A "PPI::Element" or a subclass thereof representing the interesting element. ppi Accessor to retrieve the "PPI::Document". May create the "PPI::Document" from the $code string (lazily) if needed. code Accessor to retrieve the string representation of the code. May be retrieved from the "PPI::Document" via the serialize method (lazily) if needed. SEE ALSO
"PPIx::EditorTools", App::EditorTools, Padre, and PPI. perl v5.14.2 2012-03-11 PPIx::EditorTools::ReturnObject(3pm)
Man Page