Gianni Ceccarelli > PPIx-XPath > PPIx::XPath

Download:
PPIx-XPath-2.02.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 2.02   Source  

NAME ^

PPIx::XPath - an XPath implementation for the PDOM

VERSION ^

version 2.02

SYNOPSIS ^

  use PPI;
  use PPIx::XPath;
  use Tree::XPathEngine;

  my $pdom = PPI::Document->new('some_code.pl');
  my $xpath = Tree::XPathEngine->new();
  my @subs = $xpath->findnodes('//Statement-Sub',$pdom);
  my @vars = $xpath->findnodes('//Token-Symbol',$pdom);

Deprecated interface, backward-compatible with PPIx::XPath version 1:

  use PPIx::XPath;

  my $pxp  = PPIx::XPath->new("some_code.pl");
  my @subs = $pxp->match("//Statement::Sub");
  my $vars = $pxp->match("//Token::Symbol");

DESCRIPTION ^

This module augments PPI's classes with the methods required by Tree::XPathEngine, allowing you to perform complex XPath matches against any PDOM tree.

See Tree::XPathEngine for details about its methods.

Mapping the PDOM to the XPath data model

METHODS ^

new

  my $pxp  = PPIx::XPath->new("some_code.pl");

  my $pxp  = PPIx::XPath->new($pdom);

Only useful for the backward-compatible, and deprecated, interface. Returns an instance of PPIx::XPath tied to the given document.

clean_xpath_expr

  my $new_xpath_expr = $pxp->clean_xpath_expr($old_xpath_expr);

PPIx::XPath version 1.0.0 allowed the use of partial package names (like Token::Number) as element names: this collides with the axis specification of proper XPath. For this reason, in newer version of PPIx::XPath, the element name is the class name of the PDOM node, minus the initial PPI::, with :: replaced by - (like Token-Number).

This method replaces all occurrences of PPI package names in the given string with the new names.

match

  my @subs = $pxp->match("//Statement::Sub");
  my $vars = $pxp->match("//Token::Symbol");

Only useful for the backward-compatible, and deprecated, interface. From the document this instance was built against, returns the nodes that match the given XPath expression.

You should not use this method, you should call findnodes instead:

  my $xpath = Tree::XPathEngine->new();
  my @subs = $xpath->findnodes('//Statement-Sub',$pdom);
  my @vars = $xpath->findnodes('//Token-Symbol',$pdom);

BUGS and LIMITATIONS ^

SEE ALSO ^

PPI

Tree::XPathEngine

http://www.w3.org/TR/xpath (the XPath specification)

AUTHORS ^

Dan Brook <cpan@broquaint.com> original author

Gianni Ceccarelli <dakkar@thenautilus.net> Tree::XPathEngine-based re-implementation

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2016 by Gianni Ceccarelli <dakkar@thenautilus.net>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: