Changes for version 0.825
- Added PPI::Statement::Include::type object method
- Added PPI::Statement::Include::module object method
- Added PPI::Statement::Include::pragma object method
- Added PPI::Statement::Include::version object method
- Overloaded == as "the same object" for PPI::Element
- Overloaded eq as "->content is the same" for PPI::Element
- Overloaded bool as always true, to prevent an error
- Added PPI::Statement::Package::namespace object method
- 100% round-trip safe. What goes in, will come out.
- Reduced leaks by 95%. Process size 30meg after 5000 files. Still some leaks remaining when Lexing errors out.
- Seperated largest Tokens into their own classes. This aligns token class structure with that of ::Statement and ::Structure
- Rewrote PPI::Node::DESTROY several times while hunting down more leaks
- Fixed Tokenizer crash on empty subroutine prototypes such as C< sub foo() {} >
- Treat unexpected braces as an implicit close, to make the lexer more resilient
- Added PPI::Statement::UnmatchedBrace (name suggested by Abhijit Menon-Sen) to handle closing braces found at the base of a Document.
- Enabled foo'bar package notation again.
- Getting close to the first 0.900 series beta release
Documentation
Modules
Parse and manipulate Perl code non-destructively, without using perl itself
A single cohesive Perl document
The abstract Element class, a base for all source objects
The PPI Lexer
Abstract PPI Node class, an Element that can contain other Elements
Provides
in lib/PPI/Base.pm
in lib/PPI/Document/Fragment.pm
in lib/PPI/Format/HTML.pm
in lib/PPI/Lexer/Dump.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement/Compound.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement/Include.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement/Package.pm
in lib/PPI/Statement/Scheduled.pm
in lib/PPI/Statement/Sub.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement.pm
in lib/PPI/Statement/Variable.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Structure.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Attribute.pm
in lib/PPI/Token/Bareword.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Comment.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.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/Quote.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Quote/Full.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Quote/Simple.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token.pm
in lib/PPI/Token/Symbol.pm
in lib/PPI/Token/Unknown.pm
in lib/PPI/Token/Whitespace.pm
in lib/PPI/Tokenizer.pm
in lib/PPI/Tokenizer/Quote/Full.pm
in lib/PPI/Tokenizer/Quote/Simple.pm