The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 1.204_06

  • Summary:
  • API Change
  • Details:
  • Changing PPI::Structure::ForLoop to PPI::Structure::For

Changes for version 1.204_05

  • Summary:
  • Bug fixes in preparation for production release
  • Details:
  • There is no longer any real reason to bundle the testing modules except as a potential source of more bugs.
  • Removed quantifier ? on zero-length ^ in /^?for(?:each)?\z/
  • Run-time load PPI::Document instal of compile-time loading it
  • Tweak a few load orders to get PPI::Util loaded earlier.
  • Fixed location access methods on PPI::Element
  • New PPI::Statement::Include::version_literal() method.

Changes for version 1.204_04

  • Summary:
  • Dependency tweaks
  • Details:
  • Because we bundle Test::ClassAPI, we need to explicitly match its dependencies. Bumped Params::Util to 1.00.
  • Bumped a couple of deps a couple of revisions to get better XS.

Changes for version 1.204_03

  • Summary:
  • More bug fixing, clean up, and optimisation
  • Cleaning up contributed APIs
  • Adding some demonstration classes
  • Details:
  • Implemented PPI::Transform::UpdateCopyright
  • Removed the use of 'use base'
  • Various minor simplifications
  • Renamed PPI::Statement::Switch to ::Given
  • Renamed PPI::Structure::WhenMatch to ::When
  • Converted the Lexer internals to use exception-based error handling.
  • Take advantage of the removal of all those "or return undef" to simplify the Lexer code, remove variable declarations, and inline calls to several hot-code-path functions. The Lexer should be significantly faster (FSDO "significant").
  • The v6 key on Tokenizer broke support for Perl 5.6 (perl thought it was a numeric v-string)

Changes for version 1.204_02

  • Summary:
  • Various bug fixing and stabilisation work
  • It's a perl 5.10 extravaganza!
  • Details:
  • Updated Module::Install to 0.87
  • Added Test::NoWarnings to the test suite
  • Added support for qw{foo} in addition to for ('foo')
  • Added support for vstrings again
  • Now supports the 5.10 "state" keyword. (As far as PPI is concerned it's a synonym for "my")
  • Now supports switch statements.
  • Now supports the smart match operator (~~).
  • Now supports keeping track of line numbers and file names as affected by the #line directive.
  • Now supports UNITCHECK blocks.
  • Statement::Include::module_version() implemented.
  • Statement::Include::arguments() implemented.
  • Statement::Variable::symbols() implemented.
  • Token::QuoteLike::Words::literal() implemented.
  • Token::Quote::Double::simplify() fixed.
  • Element line_number(), column_number(), visual_column_number(), logical_line_number(), and logical_filename() implemented.
  • Support for Unicode byte order marks (PPI::Token::BOM) added.
  • Token::Word::method_call() implemented.
  • Element::descendant_of() and Element::ancestor_of() implemented.
  • Statement::specialized() implemented.
  • Now can handle files named "0". (Perl::Critic got a complaint about this)
  • foreach loop variables can be declared using "our".
  • Much more comprehensive testing of compound statement detection.

Changes for version 1.204_01

  • Summary:
  • Unicode cleanup and bug fixing
  • Taking the opportunity to do some house cleaning while the code base is relatively stable, before things get crazy again.
  • Details:
  • For completeness sake, add support for empty documents
  • Moved capability detection into PPI::Util
  • POD test script now skips on install properly
  • Removed 200 lines of old dead "rawinput" code from PPI::Tokenizer
  • 100% of PPI::Tokenizer is now exception-driven
  • Workaround for "RT#35917 - charsets.t eats all available VM" (unicode bug in 5.8.6, works in 5.8.8)
  • Temporarily disable round-trip testing of 14_charset.t

Modules

PPI
Parse, Analyze and Manipulate Perl (without perl)
The PPI Document Caching Layer
Object representation of a Perl document
A Perl Document located in a specific file
A fragment of a Perl Document
A normalized Perl Document
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
Normalize Perl Documents
Provides standard document normalization functions
The base class for Perl statements
Statements which break out of normal statement flow
Describes all compound statements
The __DATA__ section of a file
Content after the __END__ of a module
A generic and non-specialised statement
Describes all compound statements
Statements that include other code
Inline Perl 6 file section
A useless null statement
A package statement
A scheduled code block
Subroutine declaration
An unknown or transient statement
Isolated unmatched brace
Variable declaration statements
Describes all compound statements
The base class for Perl braced structures
Curly braces representing a code block
Round braces for boolean context conditions
Anonymous hash or array constructor
Circular braces for a for expression
Circular braces for a switch statement
Explicit list or precedence ordering braces
Braces that represent an array or hash subscript
An unknown or unresolved brace structure
Circular braces for a when statement
A single token of Perl source code
Token getting the last index for an array
A token for a subroutine attribute
Tokens representing Unicode byte order marks
A prefix which forces a value into a different context
A comment in Perl source code
A dashed bareword token
The actual data in the __DATA__ section of a file
Completely useless content after the __END__ tag
Token class for the here-doc
Token class for a statement label
Tokens representing magic variables
Token class for a number
Token class for a binary number
Token class for an exponential notation number
Token class for a floating-point number
Token class for a binary number
Token class for a binary number
Token class for a byte-packed number
Token class for operators
Sections of POD in Perl documents
A subroutine prototype descriptor
String quote abstract base class
A standard "double quote" token
The interpolation quote-like operator
The literal quote-like operator
A 'single quote' token
Quote-like operator abstract base class
A `backticks` command token
The command quote-like operator
The readline quote-like operator
Regexp constructor quote-like operator
Word list constructor quote-like operator
Regular expression abstract base class
A standard pattern match regex
A match and replace regular expression token
A transliteration regular expression token
The __DATA__ and __END__ tags
Token class for characters that define code structure
A token class for variables and other symbols
Token of unknown or as-yet undetermined type
Tokens representing ordinary white space
The generic "word" Token
The PPI Quote Engine
The Perl Document Tokenizer
Abstract base class for document transformation classes
Demonstration PPI::Transform class

Provides

in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/Exception.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/Exception/ParserRejection.pm
in lib/PPI/Exception/ParserTimeout.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/XSAccessor.pm
in lib/PPI/Token/_QuoteEngine/Full.pm
in lib/PPI/Token/_QuoteEngine/Simple.pm
in lib/PPI/Util.pm
in lib/PPI/XSAccessor.pm