Changes for version 0.840

  • General:
  • Changed the PPI summary to no longer use the devisive word "parse" Now: "PPI - Analyze and manipulate Perl code without using perl itself"
  • Total rewrite of all the ->location code
  • Upgrading MakeFile.PL to Module::Install
  • Fixed #CPAN 8752 (a round-trip edge case bug)
  • Added 08_regression.t to do code/dump regression testing for lexer bugs
  • Completed (hopefully) HereDocs conversion to a single complex token
  • PPI is now compatible with prefork.pm (although not dependant)
  • Details:
  • Added PPI::Node::find_first object method
  • Changed PPI::Node::find_any to just call PPI::Node::find_first
  • Added PPI::Element::first_token object method
  • Added PPI::Element::last_token object method
  • Made a partial-removal-capable PPI::Element::_flush_locations
  • PPI::Document::flush_locations uses PPI::Element::_flush_locations
  • PPI::Document::index_locations is here-doc sane
  • Added PPI::Token::HereDoc::heredoc object method
  • Added PPI::Token::HereDoc::terminator object method
  • Documented PPI::Token::HereDoc
  • Added a HereDoc code/dump test to 05_lexer_practical.t
  • Added PPI::Document::serialize, which replaces the use of ->content for generating the actual string to write out to files when saving Documents.
  • File::Spec reduced from dependency to build dependency
  • Updated Test::ClassAPI dependency to newest version
  • Enabled API collision detection in 02_api.t
  • Updated Class::Autouse dependency to newest version

Changes for version 0.840_01

  • General:
  • Perl Foundation Funding Commences
  • Changes separated into General and Details from here one
  • Complete re-organisation of the quote-like token classes. Any and all code that works with quotes will be broken.
  • Gave up on the old PPI::Query code and wrote a complete new and much thinner implementation based roughly on the API of File::Find::Rule. PPI::Find uses the &wanted function (which also has a slightly different API to the old one) but has the ->in style search methods. It should be relatively easy for someone to write PPI::Find::Rule on top of it.
  • PPI::Transform is thus temporarily stale
  • Details:
  • Introduced a bug for C< foreach $foo () > and caught/fixed it during the changeover.
  • Changed PPI::Lexer::Dump to PPI::Dumper
  • API Freeze PPI::Find
  • API Freeze PPI::Dumper
  • Documented PPI::Find
  • Documented PPI::Dumper

Documentation

PPI

Modules

PPI
Analyze and manipulate Perl code without using perl itself
A single Perl document
A fragment of a Perl Document
Create normalised PPI Documents
Dumping of PDOM trees
The abstract Element class, a base for all source objects
Object version of the Element->find method
The PPI Lexer
Abstract PPI Node class, an Element that can contain other Elements
The base class for perl statements
Describes all compound statements
A package statement
A scheduled code block
Subroutine declaration
Variable declaration statements
Token class for the here-doc

Provides

in lib/PPI/Base.pm
in lib/PPI/Format/HTML.pm
in lib/PPI/Statement/Break.pm
in lib/PPI/Statement/Data.pm
in lib/PPI/Statement/End.pm
in lib/PPI/Statement/Expression.pm
in lib/PPI/Statement/Include.pm
in lib/PPI/Statement/Null.pm
in lib/PPI/Statement/Unknown.pm
in lib/PPI/Statement/UnmatchedBrace.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure/Block.pm
in lib/PPI/Structure/Condition.pm
in lib/PPI/Structure/Constructor.pm
in lib/PPI/Structure/ForLoop.pm
in lib/PPI/Structure/List.pm
in lib/PPI/Structure/Subscript.pm
in lib/PPI/Structure/Unknown.pm
in lib/PPI/Token.pm
in lib/PPI/Token/ArrayIndex.pm
in lib/PPI/Token/Attribute.pm
in lib/PPI/Token/Cast.pm
in lib/PPI/Token/Comment.pm
in lib/PPI/Token/DashedWord.pm
in lib/PPI/Token/Data.pm
in lib/PPI/Token/End.pm
in lib/PPI/Token/Label.pm
in lib/PPI/Token/Magic.pm
in lib/PPI/Token/Number.pm
in lib/PPI/Token/Operator.pm
in lib/PPI/Token/Pod.pm
in lib/PPI/Token/Prototype.pm
in lib/PPI/Token/Quote.pm
in lib/PPI/Token/Quote/Double.pm
in lib/PPI/Token/Quote/Interpolate.pm
in lib/PPI/Token/Quote/Literal.pm
in lib/PPI/Token/Quote/Single.pm
in lib/PPI/Token/QuoteLike.pm
in lib/PPI/Token/QuoteLike/Backtick.pm
in lib/PPI/Token/QuoteLike/Command.pm
in lib/PPI/Token/QuoteLike/Regexp.pm
in lib/PPI/Token/QuoteLike/Words.pm
in lib/PPI/Token/Regexp.pm
in lib/PPI/Token/Regexp/Match.pm
in lib/PPI/Token/Regexp/Substitute.pm
in lib/PPI/Token/Regexp/Transliterate.pm
in lib/PPI/Token/Separator.pm
in lib/PPI/Token/Structure.pm
in lib/PPI/Token/Symbol.pm
in lib/PPI/Token/Unknown.pm
in lib/PPI/Token/Whitespace.pm
in lib/PPI/Token/Word.pm
in lib/PPI/Token/_QuoteEngine.pm
in lib/PPI/Token/_QuoteEngine/Full.pm
in lib/PPI/Token/_QuoteEngine/Simple.pm
in lib/PPI/Tokenizer.pm
in lib/PPI/Transform.pm
in lib/PPI/Transform/Object.pm