-
-
02 Dec 2010 02:34:40 UTC
- Distribution: PPIx-Utilities
- Module version: 1.001000
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Clone repository
- Issues (2)
- Testers (20077 / 23 / 0)
- Kwalitee
Bus factor: 2- 95.38% Coverage
- License: perl_5
- Activity
24 month- Tools
- Download (25.1KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
++ed by:1 non-PAUSE userNAME
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.
Module Install Instructions
To install PPIx::Utilities, copy and paste the appropriate command in to your terminal.
cpanm PPIx::Utilities
perl -MCPAN -e shell install PPIx::Utilities
For more information on module installation, please visit the detailed CPAN module installation guide.