Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PPIx::Utilities::Node(User Contributed Perl DocumentatPPIx::Utilities::Node(3)

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.32.0			  2020-08-08	      PPIx::Utilities::Node(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | INTERFACE | BUGS AND LIMITATIONS | AUTHOR | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=PPIx::Utilities::Node&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help