Revision history for Perl extension PPI
1.276 2022-07-19 21:43:50Z
Summary:
-
Implement Replace Method (GH#274) (Renee and Olaf Alders)
1.275 2022-07-18 19:42:13Z
Summary:
-
CHECK bareword handle parsed as scheduled block (GH#247) (trwyant)
1.274 2022-05-02 18:21:56Z
Summary:
-
Indentation in here-docs is now preserved (GH#252) (trwyant)
1.273 2022-04-22 15:58:31Z
Summary:
-
Whitespace in signatures is now preserved (GH#257)
1.272 2022-02-02 16:10:50Z
Summary:
-
Drop prerequisite for IO::String on perl 5.8+
1.271 2022-01-25 21:47:21Z
Summary:
-
return correct name for lexical subroutines
-
silence uninitialized warning in t/07_token.t
-
bump minimum Test::More version to 0.96
-
fix some typos in Pod
-
moved repository to Perl-Critic GitHub org:
1.270 2019-07-09 15:14:57Z
Summary:
-
attempt to handle new blead binary/hexadecimal parsing behavior in tests
1.269 2019-05-17 18:36:46Z
Summary:
-
many small documentation improvements
1.268 2019-05-16 10:00:39Z
Summary:
-
fix a broken link in the pod
1.267 2019-05-16 09:22:34Z
Summary:
-
make PPI::Test::Run more OS-agnostic
1.266 2019-05-15 16:17:49Z
Summary:
-
keep heredoc terminator detection from triggering regex errors
-
small cleanups
Details:
-
make the output of PPI::Test::Run more useful
-
remove a superfluous import
1.265 2019-05-14 12:39:51Z
Summary:
-
simplified a code construct
1.264 2019-04-28 14:56:28Z
Summary:
-
keep vstring processing from swallowing underscores
1.262 2019-04-28 11:41:54Z
Summary:
-
convert newlines in some raw test files from win32 to unix
1.260 2019-04-28 11:10:02Z
Summary:
-
allow underscores in vstrings
1.258 2019-04-27 17:05:33Z
Summary:
-
remove accidentally included Test::InDistDir
1.256 2019-04-26 16:40:01Z
Summary:
-
allow all PPI::Document instances to have a filename attribute
1.254 2019-04-26 16:23:21Z
Summary:
-
recognize `for (;<$foo>;) {}` as containing a readline operator
1.252 2019-04-26 14:21:36Z
Summary:
-
add support for the double diamond (<<>>) input operator
-
adjust position of a todo marker to not catch a passing test
1.250 2019-04-25 16:43:32Z
Summary:
-
various smaller releng changes
Details:
-
removed dependency on File::Remove
-
add some tests including a TODO test for misparse bug on '(1)-1'
-
allow tests to run without pre-determined module versions
-
add travis-perl helper to be run before install
-
update versions of Perl Travis tests on
1.248 2019-04-25 16:08:08Z
Summary:
-
parse list-embedded curlies as hash constructors
1.246 2019-04-25 15:33:48Z
Summary:
-
support indented here-docs
-
fixed some typos
1.244 2019-04-25 15:21:51Z
Summary:
-
support key-value and index-value slices in PPI::Token::Symbol symbol method
1.242 2019-04-25 14:33:56Z
Summary:
-
keep exponents of 2 or more zeroes from trapping PPI in an endless loop
1.240 2019-04-25 14:09:24Z
Summary:
-
add support for lexical subroutines from perl-5.26
1.238 2019-04-25 12:03:37Z
Summary:
-
only release engineering, moved to Dist::Zilla, straightened out
dependencies and fixed some formatting in Changes
1.237_001 Wed 15 Nov 2017
Summary:
-
support postfix dereference
-
remove dependencies on vars, base and List::MoreUtils
-
reduce globals and cross-package variables
-
make xt/api.t skip/run properly
Details:
-
convert many cross-package var accesses to var imports
-
convert several unnecessary globals to local variables
1.236 Thu 22 June 2017
Summary:
-
prevent Node->child from proceeding without a valid argument
-
make test pragma warning code enable -w to match warnings policy
1.234 Wed 21 June 2017
Summary:
-
Prevent sub names like v10 from being version strings
(GitHub #65) (MOREGAN)
1.232 Wed 21 June 2017
Summary:
-
add Changes entries forgotten in 1.230
1.230 Wed 21 June 2017
Summary:
-
remove temporary fix introduced in 1.226
-
prevent possible regex on undefined scalar in
__current_token_is_forced_word
1.228 Tue 20 June 2017
Summary:
-
keep PPI::Dumper from breaking Perl::Critic under cperl 5.27
(RURBAN)
1.226 Tue 20 June 2017
Summary:
-
Fix test reliance on '.' in @INC (KENTNL)
-
temporary fix to keep an untested combination from blocking
1.224 Sun 14 May 2017
Summary:
-
updating an out-of-date meta.yml caused by Module::Install
1.222 Sun 14 May 2017
Summary:
-
unit tests for many parts, both passing and TODO
-
many documentation fixes
-
add ->version method to PPI::Statement::Package (WOLFSAGE)
-
remove unused PPI::Document->new timeout feature
-
do not expect '.' in @INC (PLICEASE)
-
many parsing fixes
-
various fixes to the behaviors of methods
-
removal of problematic dependencies
Details:
-
Remove undocumented, non-working 'timeout' attribute to
Document->new, including HAVE_ALARM and
PPI::Exception::ParserTimeout. (GitHub #140) (MOREGAN)
-
first cut of a travis configuration
-
do hex number matching with [[:xdigit:]]
-
some readability improvements on the code of HereDoc.pm
-
recognize heredoc even if they have no newline at the end (AUBERTG)
-
parse left side of => as bareword even if it looks like a keyword or
op (MOREGAN)
-
remove source code escapes in the output of QuoteLike::Words->literal
(MOREGAN)
-
removal of Test::NoWarnings
-
less uses of List::MoreUtils in favor of List::Util
-
expand $'x to $::main::x in Symbol->canonical as with $::x
(MOREGAN)
-
fixed parsing of large numbers in Number::Exp on Solaris 80 (JMASLAK)
-
make remove_child actually return undef on failure to find child to
remove
-
higher accuracy when deciding whether certain characters are operators
or variable type casts (*&% etc.) (MOREGAN)
-
parse x as the first element of code as a word, not an operator
(MOREGAN)
-
recognize the implied end of a package statement that includes a block
(MOREGAN)
-
parse package names that look like operators as strings, not ops
(MOREGAN)
-
parse package names that look like v10 as strings, not versions
(MOREGAN)
-
parse things like v49use as a single bareword, not v-string + keyword
(MOREGAN)
-
parse x64 as a word, not x operator + number (MOREGAN)
-
parse 1.eq 1 as float + op, not concatenation
-
parse subroutine attributes correctly (MOREGAN)
1.220 Tue 11 Nov 2014
Summary:
-
incompatible behavior fixes on PPI::Statement::Sub->prototype
-
improved parsing of various syntax elements
-
code quality improvements
-
various small documentation fixes
Details:
-
{} is now recognized as anonymous hash constructor instead of a code
block after these operators: &&= //= || && // ? :
(GitHub #36) (MOREGAN)
-
regex capture variables greater than $9 are now parsed completely,
instead of being parsed as single digit captures with numbers after
them (GitHub #38) (MOREGAN)
-
DESTROY and AUTOLOAD subs are now parsed even without the sub
keyword (GitHub #39) (MOREGAN)
-
PPI::Statement::Sub->prototype behavior now matches its
documentation, instead of returning the prototype string
unchanged and still including the parens (GitHub #56) (MOREGAN)
-
PPI::Statement::Sub->prototype now returns undef on subs without a
prototype, instead of returning an empty string
(GitHub #56) (MOREGAN)
-
list of keywords which are not parsed as packages when followed by
the Perl4 package separator ' has been increased
(GitHub #77) (MOREGAN)
-
application of a number of Perl::Critic policies and documentation
fixes (GitHub #53) (MOREGAN, MITHALDU)
-
automation of README.md generation for git (GitHub #86) (COWENS)
-
various small documentation fixes (Github #96) (MOREGAN)
1.218 Sat 16 Aug 2014
Summary:
-
Fixes for various parsing and documentation bugs
-
1MB limit on input document size removed
Details:
-
Stop directing bugs to rt.cpan.org (GitHub #40) (MOREGAN)
-
Fix documentation reference to List::Util (RT #75308) (RWSTAUNER)
-
Improve scalability of parsing long lines, and remove the size
limit on documents PPI will parse (GitHub #5) (MITHALDU)
-
Speed up adding an element to an unlabeled statement.
Allow inlining of some methods. (WOLFSAGE)
-
Expanded test coverage (DOLMEN, MOREGAN)
-
Convert inline tests to standalone tests (GitHub #12) (MOREGAN)
-
Fix for '1=>x' being parsed as x operator (GitHub #46) (MOREGAN)
-
Recognize that '1 x3' is the x operator followed by a 3
(RT #37892, GitHub #27) (MOREGAN)
-
Support all augmented assignment operators (<<=, ||=, etc.)
(RT #68176, 71705) (MOREGAN)
-
Stop upper-case "=CUT" from terminating POD (RT #75039) (JAE)
-
Support upper-case digits in hex and binary numbers, including
in the leading '0X' and '0B'. (RT #36540) (KRYDE, MOREGAN)
-
Fix float argument to range operator misparsed as version
string (RT #45014) (MOREGAN)
-
Fix POD markup in PPI::Find (RT #51693) (FWIE)
-
Fix spelling of "Tom Christiansen" (RT #67264) (TADMC)
-
Fix a large raft of spelling and grammar errors (RT #85049) (David
Steinbrunner, DOLMEN, MOREGAN)
-
Fix errors in documentation of the PPI::Element class hierarchy
(RT #30863, 69026) (SJQUINNEY)
-
Prevent PPI::XSAccessor packages from hiding corresponding PPI
packages in CPAN (RT #90792) (MITHALDU)
-
Recognize the formfeed character as whitespace (RT #67517) (WYANT)
-
Recognize regex match following 'return' (RT #27475) (ADAMK)
-
Fix missing dereference, length called on reference (RT #40103)
(ADAMK)
1.215 Sat 26 Feb 2011
Summary:
-
No changes
Details:
-
Confirmed new Perl::Critic works with 1.214_02, so we
can release a new PPI now.
1.214_02 Mon 31 Jan 2011
Summary:
-
More minor fixes, preparing for production release
Details:
-
Updated copyright year to 2011 (ADAMK)
-
Fixed RT #64247 bless {} probably contains a hash constructor (WYANT)
-
Backed out glob fix (WYANT)
-
Fixed RT #65199 Cast can trump braces in
PPI::Token::Symbol->symbol (WYANT)
1.214_01 Thu 16 Dec 2010
Summary:
-
General fix release
Details:
-
index_locations on an empty document no longer warns (WYANT)
-
Corrected a bug in line-spanning attribute support (WYANT)
-
Regression test for line-spanning attribute support (ADAMK)
-
Fixed #61305 return { foo => 1 } should parse curlys as hash
constructor, not block (WYANT)
-
Fixed #63943 map and regexp confuse PPI? (ADAMK)
1.213 Tue 6 Jul 2010
Summary:
-
Targetted bug fix, no changes to parsing or normal usage
Details:
-
Updated to Module::Install 1.00
-
Updated module depednencies in xt author tests
-
Fixed extremely broken PPI::Token::Pod::merge and added test case
1.212 Sun 9 May 2010
Summary:
-
Minor bug fixes and development support
Details:
-
Fixed #48819: Bug in ForLoop back-compatilbilty warning
-
Added support for $ENV{X_TOKENIZER} --> $PPI::Lexer::X_TOKENIZER
1.211_01 Sun 21 Feb 2010
Summary:
-
Experimentation support and bug fixes
Details:
-
Upgraded to Module::Install 0.93
-
Added support for $PPI::Lexer::X_TOKENIZER, so that alternate
experimentatal tokenizers can be swapped in for testing.
-
Added an extra 14_charsets.t case to validate we handle byte
order marks properly.
-
Moved author tests from t to xt to reduce spurious test failures
in CPAN Testers, when the testing modules change across versions
-
Fixed #26082: scalar { %x } is misparsed
-
Fixed #26591: VMS patch for PPI 1.118
-
Fixed #44862: PPI cannot parse "package Foo::100;" correctly
-
Fixed #54208: PPI::Token::Quote::Literal::literal is missing due
to case-sensitivity error
1.210 Mon 15 Feb 2010
Summary:
-
Packaging fixes
Details:
-
No functional changes
-
Upgrading to Module::Install 0.93
-
Added missing test_requires dependency for Class::Inspector
1.209 Sat 6 Feb 2010
Summary:
-
Small optimisation release
Details:
-
No functional changes
-
Upgrading to Module::Install 0.92
-
Moved the Test::ClassAPI test to only run during RELEASE_TESTING
to reduce the dependency load (and occasionally Test::ClassAPI seems
to FAIL on CPAN Testers.
1.208 Thu 14 Jan 2010
Summary:
-
THIS IS THE 100TH RELEASE OF PPI!
-
Fixes some tiny issues, otherwise unchanged from 1.207_01
Details:
-
Don't assign '' to $^W, it generates a warning on Gentoo
-
Added missing PPI::Token::Regexp fix to Changes file
-
Updating Copyright to the new year (yet again)
1.207_01 Thu 10 Dec 2009
Summary:
-
This is a general bug fix and accuracy release
Details:
-
Fixed #50309: literal() wrong result on "qw (a b c)"
-
PPI::Dumper no longer causes Elements to flush location data.
Also it no longer disables location information for non-Documents.
-
+{ package => 1 } doesn't create a PPI::Statement::Package
-
PPI::Token::Regexp and PPI::Token::QuoteLike::Regexp how have methods
for getting at the various components (delimiters, modifiers, match &
substitution strings).
1.206 Sun 9 Aug 2009
Summary:
-
This is an optimisation release (1-2% speed up)
(Using information uncovered by a Devel::NYTProf 3 alpha)
Details:
-
Removing som superfluous 1; returns
-
Using defined and ref to avoid highly excessive calls
to PPI::Util::TRUE
1.205 Mon 3 Aug 2009
Summary:
-
This is a production release
Details:
-
No changes from 1.204_07
1.204_07 Fri 31 Jul 2009
Summary:
-
Minor tweaks
Details:
-
Allow ::For and ::List to return true to ->isa(::ForLoop)
and do a once-per-process warning when we do.
-
Fixed a bug in Class::XSAccessor prototype.
1.204_06 Wed 22 Jul 2009
Summary:
-
API Change
Details:
-
Changing PPI::Structure::ForLoop to PPI::Structure::For
1.204_05 Tue 21 Jul 2009
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.
1.204_04 Thu 16 Jul 2009
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.
1.204_03 Tue 14 Jul 2009
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)
1.204_02 Sun 10 May 2009
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.
1.204_01 Sun 18 May 2008
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
1.203 Wed 14 May 2008
Summary:
-
No change, switching to production version
1.202_03 Wed 14 May 2008
Summary:
-
Initial Perl 6 support
-
Bug fixes and final 1.203 release candidate
-
I finally catch up with all the failing test cases
that Chris Dolan keeps commiting :)
Details:
-
Adding initial support for "use v6-alpha;"
-
Adding new class Perl::Statement::Include::Perl6
-
Adding a test on the KindaPerl6::Grammar,
which triggered a bug in the tokenizer during
CPAN::Metrics tinderboxing.
-
All open() calls now use three-argument form
-
Upgrading explicit Perl dependency to 5.006,
because of the previous item.
-
Better support for labels, including tricky ones like "BEGIN : { ... }"
1.202_02 Wed 2 Jan 2008
Summary:
-
Back-compatibility and 1.203 release candidate
Details:
-
Removing the use of use base 'Exporter';
-
Updating Test::SubCalls dep to 1.07 to get
the use base 'Exporter' fix for that too.
1.202_01 Tue 20 Nov 2007
Summary:
-
Minor bug fix release
Details:
-
RT #30469: calling length() on PPI::Token gives error
-
14_charsets.t was incorrectly skipping in situations
that it should have been running.
1.201 Mon 22 Oct 2007
Summary:
-
Minor bug fix release
Details:
-
The internal exception class PPI::Exception::ParserTimeout was
inheriting from itself.
1.200 Mon 15 Oct 2007
Summary:
-
Production Release
Details:
-
Zero changes from 1.199_07
-
Updated version from 1.199_07 to 1.200
1.199_07 Fri 12 Oct 2007
Summary:
-
This is the third release candidate for 1.200
-
Minor tweak
Details:
-
Changed the way to detect Perl 5.6 to ignore the 1_0e1_0 failure
1.199_06 Wed 10 Oct 2007
Summary:
-
This is the second release candidate for 1.200
-
Some small bug fixes
Details:
-
Remove -w from test scripts to allow taint'enabled testing
-
Skip the failing 1_0e1_0 test on Perl 5.6.2
1.199_05 Tue 9 Oct 2007
Summary:
-
This is the first release candidate for 1.200
-
Fix some parser corner cases
Details:
-
Fixed parsing of %!, $^\w, and %^H
-
Fixed parsing of @{$foo}-1
-
Fixed parsing of <$fh1>, <$fh2>
1.199_04
Summary:
-
Build tweaks
-
More regression changes
Details:
-
Increasing List::Util dependency to 1.19
(Removes a memory leak on Win32)
1.199_03 Thu 12 Jul 2007
Summary:
-
Support for a few more rare/legacy Perl syntax
-
Tokenizer simplification, optimization and exception'ification
Details:
-
Added support for the <<\EOF heredoc style
-
Always create ->{type} in full-quote sections
-
Converted more of the Tokenizer to use exceptions
-
Optimized away a bunch of now-unneeded "or return undef"
-
Optimized _set_token_class down to a single statement
-
Inlined _set_token_class out of existence
-
Cache and fast-clone PPI::Token::Whitespace->null
-
Removed some superfluous parameter checks on private methods,
for conditions that would cause explosions and be noticed anyway.
-
Removed the fancy options from PPI::Token::new
-
More consistent structure of incomplete quotes
1.199_02 Mon 5 Mar 2007
Summary:
-
Added parser timeout support
-
Fixing various regression cases
-
Adding some housekeeping tweaks
Details:
-
Created PPI::Exception with an eye to moving towards
using exceptions more for error handling (for speed).
The goal is to get rid of the "or return undef"s.
-
Added the timeout param to the PPI::Document constructor
which uses alarm to implement basic timeout support.
This should help when parsing a large corpus on Unix.
(Not available on Win32)
-
Fixed incorrect location() for PPI::Structure instances.
-
Adding better parsing of hash constructors.
-
Pushing Clone dependency to 0.22 to get closer to taint support)
-
Pushing deps on bundled test modules to prevent accidentally
bundling old versions.
1.199_01 Tue 31 Oct 2006
Summary:
-
Improved lexing correctness
-
Partial implementation of literal
-
Initial implementation of Number classes (Chris Dolan)
Details:
-
Split out PPI::Token::Number subclasses
-
Implement numbers with exponential notation
-
Implement literal() for ::Number classes (except ::Version)
-
Implement literal() for ::Token::Quote::Single
-
Added -T for inline tests
-
Add tests for nested statements and nested structures
-
Fixed some bugs as a result
-
Improved detection of the correct curly brace structure types
1.118 Fri 22 Sep 2006
Summary:
-
Better 5.10 support
-
Fixing various (mostly parsing) bugs
Details:
-
Upgraded to Module::Install 0.64
-
Improving support for dor and added //= operators
-
Fixed parsing of binary, octal and hex numbers
-
Fixed parsing of /= and *=
-
Fixed #21571 symbol() returns just sigil with adjacent braces
-
Fixed #21575 variables() chokes on list with whitespace
-
Fixed #20480 (Misparse of some floating-point numbers.)
-
Fixed #19999: Make test fails (undeclared global variable $document) under Perl 5.6.2
(or at least, I think I have. This needs double-checking on Perl 5.6.2)
-
Partially Fixed #16952: [PATCH] Speed up tokenizer char-by-char
(Did not apply the patch, but fixed a bug noted as an aside in the report)
-
PPI::Document::File was returning a plain PPI::Document object, fixed.
-
FINALLY added some basic POD for PPI::Structure, the one class I somehow
keep forgetting to do.
1.117 Sat 02 Sep 2006
Summary:
-
Fixing bugs introduced in 1.116
Details:
-
Simple compound statements "{ 1 }" were not end-detecting properly
-
The new handling for the "-" character was shortcutting naively
-
Labelled compound statements were not end-detecting properly
-
{ package => 1 } was treating package incorrectly
-
Fixed bugs in test cases submitted by the Perl::Critic team
-
Added a number of extra test cases, and introduced Test::Object
based testing for PPI::Document objects.
1.116 Thu 31 Aug 2006
Summary:
-
PPI::Document::File first release
-
Adding readonly attribute
-
Fixed various accumulated bugs
Details:
-
Upgraded to Module::Install 0.63
-
Add a new file-only subclass of PPI::Document
-
Added the readonly attribute to the PPI::Document->new constructor
-
Added method PPI::Document->readonly method
-
'goto' is a PPI::Statement::Break
-
Re-fixed #19629: End of list mistakenly seen as end of statement
-
Applied #16892: [PATCH] docs and comments
-
Fixed #16815 (location of Structure::List is not defined.)
-
Fixed misparsing of C< 1-1 >
-
Fixed #18413: PPI::Node prune() implementation broken
-
Fixed #20428 (minor doc bug in PPI::Token::Symbol)
-
Resolved NOTABUG #20031 (PPI installation)
-
Resolved NOTABUG #20038 (PPI installation)
-
Fixed #19883: 'package' bareword used as hash key is detected as package statement
-
Fixed #19629: End of list mistakenly seen as end of statement
-
Fixed #15043: (no description) # He wanted PPI::Document::File
1.115 Sat 03 Jun 2006
Summary:
-
Fixing rt.cpan.org bugs
Details:
-
Fixed #19614: Suspicious code in PPI::Structure
-
Fixed #16831: until () { } not parsed as compound statement
-
NOTABUG #16834: "$a = 1 if ($a == 2)" vs "$a = 1 if $a == 2"
-
Fixed #19629: End of list mistakenly seen as end of statement
-
Fixed #18413: PPI::Node prune() implementation broken
1.114 Thu 25 May 2006
Summary:
-
This release addresses only dependency issues
Details:
-
Changed over from IO::Scalar to IO::String
-
Added a dependency on Task::Weaken so that we can make
various not-so-clueful downstream packagers play nicely.
1.113 Wed 10 May 2006
Summary:
-
This release contains only build-time changes
Details:
-
Upgraded to Module::Install 0.62
-
No features() used in this dist, so removing auto_install
1.112 Mon 24 Apr 2006
Summary:
-
Emergency release to fix a bug that prevents install on perl > 5.8.4
Details:
-
Small typo in the unicode-specific section of 14_charsets.t
prevents tests passing for anyone with a unicode-sane Perl version.
-
Added a test for strange locales that can't handle unicode,
and skip the unicode tests.
1.111 Sat 22 Apr 2006
General
-
Moved from SourceForge CVS to new collaborative SVN repository
-
Fixed regressions other people had added since 1.110
-
Upgraded to Module::Install 0.62
Details:
-
SourceForge was too hard to get into, so moved to specially designed
new SVN repository to make it easy for others to help out.
-
Moved t.data to t/data in line with current style and to reduce complexity.
-
Fixed t/data/08_regression/11_multiply_vs_glob_cast (added by unknown)
-
Fixed t/data/08_regression/12_pow (added by unknown)
-
Removed every use of UNIVERSAL::isa in the tests
-
Upgraded to Module::Install 0.62 (my private prerelease)
1.110 Fri Jan 27 2005
General
-
Added test support for the third location component (Arjen Laarhoven)
-
Various bug fixes
(Releasing early with only small changes at the request of Perl::Critic)
Details:
-
Fixed CPAN #16924: PPI::Statement::Sub.pm fix to use Params::Util line to resolve _INSTANCE error
-
Fixed CPAN #16837: typo in PPI::Statement::Expression POD
-
Fixed CPAN #16973: PPI 1.109 shouldn't require List::Util 1.18
(We do need 1.18 to avoid a leak, but it doesn't work everywhere)
-
Fixed CPAN #16814: _INSTANCE method not defined in PPI::Statement::Sub (dupe)
-
Arjen Laarhoven added to CVS committers
-
Added a third element to ->location return arrayref that contains the visual
starting column of the token, taking into account tabbing.
1.109 Fri Dec 30 2005
Summary:
-
Various bug fixes
-
Minor structural cleanup
Details:
-
Removed every single use of UNIVERSAL::isa
-
PPI::Normal was quite broken, cleaned it up
-
Fixed PPI::Normal::Standard::remove_statement_separator
-
Fixed CPAN #16674 PPI::Token::Quote::Double->interpolations
(awigley)
-
Fixed CPAN #15131 PPI::Node->find() behavior not completely
documented (Jeffrey Thalhammer)
-
Fixed CPAN 13743 PPI::Statement::Scheduled api (johanl)
-
PPI::Statement::Scheduled is now a subclass of PPI::Statement::Sub
-
Removed breaking circular include in PPI::Util
-
Removed an 'our' variable in t/04_element.t that created a 5.6.0 dependency
-
Only do the PPI::Cache tests that use Test::SubCalls if >= 5.006
-
(Except for File::Remove, we should ACTUALLY depend on 5.005 now)
-
Fixed CPAN #16671 $_ is not localized (JPIERCE)
(I missed an unlocaled $_ hiding in the Node object destructor)
1.108 Thu Dec 15 2005
Summary:
-
Fixing of some very minor bugs
Details:
-
8 wasn't an illegal character in an octal number (fixed)
-
Two <<heredocs with no content on the final line didn't round-trip (fixed)
1.107 Wed Dec 14 2005
Summary:
-
PPI is now Editor-compatible.
-
You can create a PPI::Document from random ASCII line noise!
Details:
-
Added a dozen various patches to complete round-trip Tokenizer
and Lexer support for absolutely anything (i.e. line noise)
inside the normal set of ASCII characters used in Perl programs.
-
Does not include Latin-1 and Unicode line noise (yet).
-
Completely the 21_exhaustive.t test script.
-
Tested 21_exhaustive.t against 500,000 x 120-character
completely random line noise Perl programs.
(Apparently I'm still leaking 1k per document somewhere)
1.106 Sun Dec 11 2005
Summary:
-
More changes to support all possible 4-character programs
Details:
-
Various fixes to weird things like *::'
1.105 Sat Dec 10 2005
Summary:
-
Improvements driven by Audrey Tang's pugs wishlist.
(So pugs can parse Perl 5, eep)
-
Latin-1/Unicode improvements (but now requires perl >= 5.8.5)
(not pre-checked and enforced yet, but will be)
-
Starting new generation of "exhaustive" testing
Details:
-
Added 20_tokenizer_regressions, which tests all
detectably-failing 3-or-less character long Perl programs
(not inclusive of latin-1 or Unicode). (Audrey Tang)
-
Fixed bug for incomplete <READLINE> quotes at EOF
(there may be a few more similar cases)
-
Fixed bug with $'0 (where 0 is only legal after ::)
-
No longer die for illegal chars in hex/bin number types
(Attach the error to $token->{_warning} instead)
-
Caught a number of cases with trailing colons for $things
(Both at EOF and end of token)
-
Convert [^\W\d]\w* to (?!\d)\w+ to improve unicode support
in symbols etc (Audrey Tang)
-
Miscellaneous doc bugs in the SYNOPSIS (Audrey Tang)
1.104 Thu Nov 10 2005
General
-
No change to code
-
Both List::Util and List::MoreUtil contain memory leaks,
and we use them extensively. Pushed the dependencies up
to versions with the memory leaks fixed.
1.103 Thu Oct 6 2005
General
-
Small bug fix that shouldn't have escaped
Details:
-
Changed md5hex_file to act more like the PPI::Documeny way.
That is, localise and THEN convert to \015
1.102 Wed Oct 5 2005
General
-
Small things to support Perl::Metrics
Details:
-
Added undocumented PPI::Util::md5hex_file function
1.101 Thu Sep 29 2005
General
-
Bug fix release
Details:
-
Fixed CPAN bug #14436 and #14440, misparse for my ($foo) ...
-
Added an self-analysis test script for PPI-testable problems
-
Fixed some minor bugs it threw up.
1.100_03
General
-
Major bug fixing
-
Some additions to help simplify Perl::Metrics
Details:
-
A whole bunch (practically all) of the sibling code was breaking
under non-trivial use. Fixed, with a number of new tests added.
-
Added function PPI::Util::md5hex
-
Added method PPI::Document::hex_id
1.100_02
General
-
Various bug fixes
-
Completed the first version of PPI::Cache
Details:
-
Expanded round-trip testing coverage to all the lexer and
regression test files
-
06_round_trip.t wasn't doing the round-trip test properly.
Fortunately, this only resulted in false failures, so no
actual damage was done as a result of this.
1.100_01 Sat Sep 03 2005
Summary:
-
Added integrated cache support
Details:
-
Added PPI::Cache class
-
Removed warning in 99_pod.t
-
Added a common PPI::Util::_slurp function
-
PPI::Document can be given a cache to use
1.003 Tue Aug 18 2005
Summary:
-
Bug fix release
Details:
-
Add support for 'for $foo () {}'
-
Add support for 'for my $foo () {}'
-
Fixed bug where "'Hello..." crashed the Tokenizer
-
Fixed bug where '"Hello...' crashed the Tokenizer
-
Fixed bug where 's' crashed the Tokenizer
1.002 Thu Jul 14 2005
Summary:
-
Bug fix release
Details:
-
Fixed CPAN #13655 - insert_before and insert_after broken.
1.001 Tue Jul 12 2005
Summary:
-
Turning on Test::Inline scripts
Details:
-
Bug fix: ->string returns wrong for qq <foo> and all braced quotes
-
Added Test::Inline 2.100-type inline2test.conf and inline2test.tpl files
-
Added t/ppi_token__quoteengine_full.t
-
Added t/ppi_token_quote_single.t
-
Added t/ppi_token_quote_double.t
-
Added t/ppi_token_quote_literal.t
-
Added t/ppi_token_quote_interpolate.t
1.000 Sat Jul 9 2005
Summary:
-
FIRST PRODUCTION RELEASE
-
Finalising POD, corrected the Copyright dates
-
Rewrote much of the main PPI.pm docs
-
Removing more unneeded dependencies
-
Added native Storable support
Details:
-
Removed dependency on Class::Inspector
-
Added build dependency on Class::Inspector and include() it
(although it's still needed at build time, this still does manage to
reduce the number of files to download by one more)
-
Added PPI::Document::STORABLE_freeze and PPI::Document::STORABLE_thaw
0.996 Fri Jul 8 2005
Summary:
-
RELEASE CANDIDATE 2
-
Clearing all remaining RT bugs
-
Removing and inlining dependencies
Details:
-
Resolved PDOM bug CPAN #13454 ( while ( $s = $s->sprevious_sibling ) infinite loops )
Mental Note: Doing an auto-decrement in an array subscript is BAD
-
Resolved Lexer bug CPAN #13425 ( $p{package} creates a PPI::Statement::Package )
Added smarts to resolve word-started statements as ::Expression in subscripts
-
Resolved PDOM bug CPAN #13326 ( problems in index_locations )
Patch and comprehensive additional tests provided by johanl[ÄT]DarSerMan.com
-
Removed dependency on Class::Autouse. Just load Tokenizer and Lexer up front.
-
Removed dependency on File::Slurp. Only use it 3 times and it's not worth it
when almost all the files we will read are under 50k.
0.995 Sun Jul 3 2005
Summary:
-
RELEASE CANDIDATE 1
-
Added some internals to help with XML compatibility
-
Completed primary POD docs
-
Completed first versions of insert_before and insert_after
-
Removed last uses of _isa
-
Added final missing POD docs
Details:
-
Added convenience method PPI::Element::class
-
Added docs for all PPI::Structure classes
-
Added additional tests to check for ::Unknown classes
-
Added PPI::Document::insert_before to return an error
-
Added PPI::Document::insert_after to return an error
-
Added PPI::Document::replace to return an error
-
Removed a number of unneeded UNIVERSAL::isa imports
-
Removed PPI::Token::_isa before anyone starts using it.
It was hacky and unsuitable to a production release
0.994 skipped
0.993 Tue Jun 21 2005
Summary:
-
Various minor code, packaging and POD cleanups
Details:
-
Corrected a POD bug in PPI::Dumper
-
Upgraded PPI::Dumper param checking to Params::Util
-
Restored PPI::Element->clone to using Clone::clone ( 0.17+ )
-
Removed dependency on Storable
-
Until it fixes the problem, explicitly include ExtUtils::AutoInstall
0.992 Sun Jun 12 2005
Summary:
-
Added the PPI::Transform API
0.991 Fri Jun 10 2005
-
Typo. I wasn't dieing on newlines to PPI::Document->new( string )
correctly, and thus dieing without the API CHANGE message.
This was confusing people as to why.
0.990 Wed Jun 8 2005
Summary:
-
Last version (hopefully) to make API changes
-
Slight API shuffle in the constructors
-
Completed all PPI::Statement::* API documentation
-
Enabled latin-1 support in the appropriate places
0.906 Thu Apr 28 2005
Summary:
-
Completed location support and added related unit tests
-
Added API for future support of tab widths
Details:
-
Removed PPI::Element::_line
-
Removed PPI::Element::_col
-
Fixed bugs in PPI::Document::index_location
-
Fixed bugs in PPI::Element::location
-
Added 12_location.t unit test
-
Added PPI::Document::tab_width method
-
Added PPI::Normal::Standard::remove_useless_attributes
(to remove the ->{tab_width} attributes and later other things)
0.905 Wed Apr 20 2005
Summary:
-
Completely forgot to write unit tests for PPI::Util,
and a bug slipped in. Fixed and added tests
Details:
-
Fixed bug in PPI::Util::_Document
-
Added 11_util.t
0.904 Wed Apr 20 2005
Summary:
-
Improvements to PPI::Normal
-
Method renaming to parse-time PDOM private methods
-
Various bug fixes and POD tweaks
-
Added PPI::Util
Details:
-
Partly added Layer 2 to PPI::Normal
-
Added function PPI::Normal::Standard::remove_useless_pragma
-
Added function PPI::Normal::Standard::remove_statement_separator
-
Added function PPI::Normal::Standard::remove_useless_return
-
Renamed _on_line_start to __TOKENIZER__on_line_start
-
Renamed _on_line_end to __TOKENIZER__on_line_end
-
Renamed _on_char to __TOKENIZER__on_char
-
Renamed _scan_for_end to __TOKENIZER__scan_for_end
-
Renamed _commit to __TOKENIZER__commit
-
Renamed _is_an_attribute to __TOKENIZER__is_an_attribute
-
Renamed _literal to __TOKENIZER__literal
-
Renamed _opposite to __LEXER__opposite
-
Fixed bug in PPI::Statement::Package::namespace
-
Added unit tests for PPI::Statement::Package
-
Added (currently mostly internal) PPI::Util
-
Added exportable function PPI::Util::_Document
0.903 Fri Mar 25 2005
Summary:
-
PPI::Document and other PPI::Node-subclasses will now implicitly
DESTROY correctly.
-
Now that PPI.pm is just a module loader, merge the main
documentation from PPI::Manual back into it again.
Details:
-
Added use of Scalar::Util::weaken for all %_PARENT writes
-
Uncovered critical bug in Clone, so we use Storable::dclone
for now, until Clone is fixed.
This resolves rt.cpan.org #11552
-
Added dependency on Storable 1.13
-
Moved all PPI::Manual content to PPI and relinked
This resolves rt.cpan.org #11803
-
Removed lib/PPI/Manual.pod
-
Added the standard 99_pod.t to check POD
-
Fixed a POD bug in Element.pm
0.902 Sun Feb 6 2005
Summary:
-
Added Document Normalization functions from old Perl::Compare
(although it is very very limited in function at this point)
Details:
-
Added class PPI::Normal
-
Added class PPI::Normal::Standard
-
Added class PPI::Document::Normalized
-
Added method PPI::Document->normalize
-
Bug: ->clone was going to all the trouble to build a clone,
but then returning the original :( Fixed
0.901 Sat Jan 29 2005
Summary:
-
Moved all up-to-date code over to SourceForge
-
Various fixes to allow the release of File::Find::Rule::PPI
Details:
-
Got all modules synchronising their versions correctly
-
Moved to SourceForge CVS repository
-
Changed all files over to the new CVS directory layout
-
Fixed bug in PPI::Node::find_first
-
Added unit tests for PPI::Node::find_first
-
Added unit tests for PPI::Node::find_any
-
Added a stub and docs for PPI::Statement::stable
0.900 Mon Jan 17 2005
Summary:
-
Final removal of PPI::Base
-
Completed majority of crash bugs in the Tokenizer
Details:
-
Fixed Tokenizer Bug C< @foo = <<EOF; > seen as ::Readline
-
Fixed Tokenizer Bug C< (<<EOF) > seen as ::Readline
-
Fixed Tokenizer Bug C< q'foo bar' > parsed incorrectly
-
Fixed bug in PPI::Token::_QuoteEngine::_scan_quote_like_operator_gap
-
Fixed Tokenizer Bug C< $foo:'<undef>' > sees symbol $foo:'
-
Fixed Tokenizer Bug C< $#arrayindex > was seen as a Symbol
-
Fixed Tokenizer Bug C< %2 > was seen as a Symbol
-
Fixed Tokenizer Bug C< &64 > was seen as a Symbol
-
Fixed Tokenizer Bug C< $::| > is actually a Magic
-
Fixed Tokenizer Bug C< @0 > is a Magic
-
Deleted PPI::Base
-
Added $PPI::Element::errstr
-
Added basic private error methods to PPI::Element
-
PPI::Element::significant now returns '' as false
-
PPI::XS - Added all C<significant> methods
0.846 Mon Jan 17 2005
Summary:
-
Added proper support for <FILE>
-
Last release before beta 1 if all looks good
Details:
-
Added class PPI::Token::QuoteLike::Readline
-
Added t.data/05_lexer_practical/10_readline.code/dump
-
Added support for <>
-
A few other minor bug fixes
0.845 Sat Jan 15 2005
Summary:
-
Adding integration with PPI::XS, autoloading if installed
Details:
-
Added $PPI::XS_COMPATIBLE and $PPI::XS_EXCLUDE variables to guide integration
-
Don't autoload PPI::Document, always load
-
Load in PPI::XS whenever it is installed
-
Loading and depending on Class::Inspector
-
PPI::Element::significant implemented in XS (as a trial)
0.844 Fri Jan 14 2005
Summary:
-
Found a massive performance bug when parsing large perl constructs
-
Fixed some install problems
Details:
-
PPI::Node::schild was copying the entirety of its child array each call.
This was causing massive slowdowns when ->{children} got large. Fixed.
-
The core tests still expect Transform to be in the core. Fixed.
0.843 Tue Jan 12 2005
Summary:
-
Starting the process of removing PPI::Base.
It only does does error handling now, which will be split up.
-
Fixing some packaging and "play well with others" issues
Details:
-
Randal Schwartz pointed out t/06... wouldn't working for him.
It appears when Test::More bug CPAN #8385 was fixed, we broke.
-
We now include build-time-only dependencies in the installer
-
Although unusable, PPI::Document::Normalized's version fell out
of sync with the rest of the distribution. Fixed.
-
PPI::Tokenizer no longer inherits from PPI::Base
-
Added class variable $PPI::Tokenizer::errstr
-
Added class method PPI::Tokenizer->errstr
-
Fixed Tokenizer Bug: C< y => 1 > was being seen as a regex
-
Fixed Tokenizer Bug: C< <<''; > was dying because I expected at
least one character
-
Fixed Tokenizer Bug: C< $foo->{s} > was being seen as a regex
0.842 Tue Jan 11 2005
Summary:
-
Lots of debugging based on Tinderbox results
Details:
-
Fixed MANIFEST.SKIP to removed PPI::Transform and PPI::Tinderbox
from the core PPI distribution (like they should be)
-
Optimised the previous #9582 to not have to run for EVERY word,
only those where it might be needed.
-
Corrected a use of QuoteLike::Execute to QuoteLike::Backtick
-
Fixed CPAN #9598 Tokenizer Bug: C< qx( $command ) >
-
Fixed CPAN #9614 Tokenizer Bug: C< $foo << 16 >
-
Set the properly includive regex for << '...' here-doc
-
Added an very early filter to prevent non-basic chars going in
0.841 Mon Jan 10 2005
Summary:
-
Completed much more documentation on the core classes
-
PPI::Tester back in sync again (separate distribution)
-
PPI::Processor and PPI::Tinderbox completed (separate distribution)
Details:
-
Documented PPI::Tokenizer
-
PPI::Document->new( $source ) added as a convenience
-
PPI::Lexer::lex_file can now be called statically
-
PPI::Lexer::lex_source can now be called statically
-
PPI::Lexer::lex_tokenizer can now be called statically
-
Fixed a small bug in PPI::Dumper::print
-
Fixed CPAN #9582 Tokenizer Bug: C< sub y { } # Comment >
-
Fixed similar case with C< foo->y() >
0.840 Thu Dec 21 2004
Summary:
-
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
0.840_01 Tue Dec 21 2004
Summary:
-
Perl Foundation Funding Commences
-
Changes separated into General and Details from here on
-
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
0.831 Fri Nov 5 2004
-
Overloaded PPI::Document bool => true
-
Overloaded PPI::Document "" => content
(That is, ::Documents stringify to their content)
-
Fixed PPI::Document::save
-
Merged Leon Brocard's docs patch
-
Cleaned up PPI::Node::_condition and documented conditions better (fixed #7799)
-
Allow dropping of the initial PPI:: in class search conditions
-
Fixed two instances of File::Slurp::read_file being called as a method
0.830 Mon Sep 27 2004
-
Added PPI::Statement::Package::file_scoped object method
-
Handle potentially dangerous C< sub foo ($$ > safer
-
Resolve C< sub BEGIN { } > to PPI::Statement::Scheduled correctly
-
Resolve C< sub () { 1 }; > to PPI::Statement correctly
-
API Freeze PPI::Statement::Package
-
API Freeze PPI::Statement::Scheduled
-
API Freeze PPI::Statement::Sub
-
Documented PPI::Statement
-
Documented PPI::Statement::Package
-
Documented PPI::Statement::Scheduled
-
Documented PPI::Statement::Sub
-
Documented PPI::Document::Fragment
0.829 Sat Sep 25 2004
-
BREAKS API COMPATIBILITY
-
Changed PPI::Token::SubPrototype to PPI::Token::Prototype
-
Added PPI::Token::Prototype::prototype object method
-
Added PPI::Statement::Sub::prototype object method
-
Added PPI::Statement::Sub::block object method
-
Fixed PPI::Statement::Include::version
0.828 Sun Aug 8 2004
-
BREAKS API COMPATIBILITY
-
Changed PPI::Token::DashedBareword to PPI::Token::Quote::Dashed
-
Changed PPI::Token::Bareword to PPI::Token::Word
-
Vastly improved PPI::Manual
0.827 Thu Aug 5 2004
-
Added PPI::Token::Separator class ( for __DATA__ and __END__ )
-
Added better Tokenizer handling of __DATA__ and __END__
-
Added better Lexer handling of __DATA__ and __END__
-
Fixed some version inconsistencies
0.826 Sat Jul 31 2004
-
Added PPI::Element::statement object method
-
Added PPI::Transform abstract class
-
Sped up the 'bool' overload for PPI::Element
-
Added PPI::Element::snext_sibling object method
-
Added PPI::Element::sprevious_sibling object method
-
Added PPI::Element::insert_before object method placeholder
-
Added PPI::Element::insert_after object method placeholder
-
Changed {elements} to {children} to match PPI::Node definitions
-
Added PPI::Node::first_element object method
-
Added PPI::Node::last_element object method
-
Added PPI::Element::next_token object method
-
Added PPI::Element::previous_token object method
-
Added PPI::Token::Symbol::symbol object method
0.825 Mon Jul 26 2004
-
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.
-
Separated largest Tokens into their own files.
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
0.824 Wed Jul 21 2004
-
Removed a 6 meg tmon.out file I accidentally bundled
0.823 Wed Jul 21 2004
-
Added PPI::Document::Fragment class
-
Added PPI::Node::schildren object method
-
Completed compound statement parsing
-
Lexer is now officially feature complete
0.822 Wed Jul 21 2004
-
Filling out the API test as much as possible
-
Added PPI::Statement::label object method
-
Moved PPI::Structure::elements object method to PPI::Node::elements
-
Re-organised statement parsing to better implement ::Compound statements
-
Added PPI::Statement::Data class
-
Added PPI::Statement::End class
-
Re-organised the _lex_statement, _statement_continues stuff, ready for while
-
Added PPI::Lexer::_lex_statement_end to handle PPI::Statement::End properly
-
Organising 02_api.t was getting hard, so added implicit Module=class to Test::ClassAPI
0.821 Mon Jul 19 2004
-
Cleaned up test data files directories
-
Added PPI::Statement::Variable::type object method
-
Added PPI::Statement::Variable::variables object method
-
Added some more classes to the API testing
-
Started 07_tokens.t for testing particular token classes
-
Added PPI::Token::Symbol::canonical object method (and tests)
-
PPI::Token::Magic now ISA PPI::Token::Symbol
-
PPI::Element::clone now fixes _PARENT links for Nodes
0.820 Mon Jul 19 2004
-
Added Round-Trip-Safe testing for all PPI files
-
Added PPI::Node::find_any object method
-
Added PPI::Node::contains object method
-
Continuing the never ending addition of tests
-
Structure open and close brace tokens now see the Structure as their parent
-
Removed the sample application, to streamline the core install
-
Removed dependencies for the sample application
-
Removed custom META.yml, as now no longer needed
0.819 Mon Jul 14 2004
-
Many parts of PPI are VASTLY changed in this revision
-
Breaks API compatibility heavily
-
Adds dependency on List::MoreUtils
-
Added PPI::Lexer support for CHECK blocks
-
Added PPI::Document::load method
-
Added PPI::Document::save method
-
Added PPI::Document::index_locations method
-
Added PPI::Document::flush_locations method
-
Added PPI::Element::top method
-
Added PPI::Element::document method
-
Renamed PPI::Element::extract -> PPI::Element::remove
-
Added test script for element-y stuff
-
Optimisation across the board using List::Any
-
Added PPI::Node::first_child method
-
Added PPI::Node::last_child method
-
Added PPI::Element::clone method
-
Removed Filehandle support from PPI::Tokenizer, to allow the
ability to rollback source lines into the buffer if needed.
-
Added POD documentation for PPI::Element
-
Added POD documentation for PPI::Node
-
Added POD documentation for PPI::Document
0.818 Mon Jul 5 2004
-
Changed lib/PPI/Manual.pm to lib/PPI/Manual.pod
-
Added documentation for PPI::Lexer
-
Fixed the misparsing of s{//}{\}
-
More clues added for deciding "slash or regex"
-
Removed PPI::Batch from the default distribution
-
Replaced File::Flat with File::Slurp to reduce dependencies
0.817 Thu Jul 1 2004
-
Fixed the misparsing of $#{ }
-
Changed PPI::ParentElement to PPI::Node and moved it to its own file
-
Changed PPI::Common to PPI::Base
-
Fixed PPI::Node::find
-
Added PPI::Node::prune
-
Started to add a little more class structure documentation
-
Tried to make the DESTROY sequence of events work better
0.816 Tue Jun 29 2004
-
Solved the "last token in file parses wrong" bug
0.815 Sun Jun 27 2004
-
Fixed a bug with the detection of @- and @+
-
Added support for @*
-
Added missing classmap entry for ^ to ::Token::WhiteSpace
-
Added support for arcane "foo"x10 idiosyncracy
0.814 Sat Jun 26 2004
-
Added the PPI tester, a desktop-based interactive debugger, which
should greatly accelerate finding and fixing both ::Tokenizer
and ::Lexer bugs. This will probably end up as a separate
distribution though, as it has a dependency on wxPerl.
-
Fixed the misparsing of Foo::Bar::Baz
-
Fixed the misparsing of *100
-
Fixed the misparsing of Class::->method properly, or rather Foo::
-
Tokenizer correctly identifies labels
-
Changed PPI::Statement::Flow to PPI::Statement::Compound
-
Removed the extra null whitespace token appearing after a bareword
at the end of a file.
-
-X operator are recognised correctly, although not at end of file
-
Lexer detects subroutine and if () statement ends correctly
0.813 Sat Jun 26 2004
-
PPI::Lexer is now structurally complete
0.812 Tue Jun 22 2004
-
No changes to PPI itself.
-
With the addition of Test::ClassAPI 'complete' support,
upgraded 02_api.t to use it. Fixed a few small house-keeping bugs.
0.811 Mon Jun 21 2004
-
Added support for subroutine attributes
-
Fixed some problems with anonymous subroutines and prototypes
-
$#$foo parses as (Cast,Symbol) now, not (Magic,Symbol)
0.810 Mon Jun 14 2004
-
Recognise the _ magic filehandle
0.809 Sat Apr 17 2004
-
No changes to PPI itself.
Set the correct number of tests to match changes to Test::ClassAPI
0.808 Sat Apr 17 2004
-
No changes to PPI itself.
Upgraded 02_api.t to match changes to Test::ClassAPI
0.807 Sat Apr 3 2004
-
Added a manual META.yml file to stop the bundled private AppLib
library from being indexed by CPAN
0.806 Mon Mar 22 2004
-
The $} magic variable is now supported
-
Fixed a "tight sub property" bug ( sub foo:lvalue )
0.805 Sun Sep 28 2003
-
The maximum line length regressed, reseting it to 5000.
-
In PPI::Format::HTML, not any parsing error causing a
premature end of tokenizer by adding it in a comment at
the end of the file.
0.804 Sat Sep 06 2003
-
Statement and Structure resolution preliminarily work.
Some basic types of statements and structures are identified.
-
PPI::Format::Apache has been separated into a different module
0.803 Sat Sep 06 2003
-
Added very long line protection support.
Maximum line length is now 5000.
-
Added bug fixes to the Lexer so that block tree building works
mostly OK again, without adding broken duplicate tokens.
-
Added the PPI::Lexer::Dump module, to do Lexer object dumps.
0.802 Sat Aug 23 2003
-
PPI::Format::HTML sends the correct content headers
0.801 Fri Aug 22 2003
-
Moved to a new numbering scheme to get more room before 1.0
-
Always fully load when called under mod_perl
-
Add mod_perl hook to PPI::Format::HTML
0.8 Fixes to the quote parsing engine
0.7 Fixed some minor bugs
0.6 Fixed POD, fixed version number, included $'a as a symbol
0.5 Missing
0.4 Mon Dec 23 10:24:21
-
Some more minor parsing fixes in Tokenizer
-
Completely changed the API from doThis to do_this style
-
Changed API to indicate private methods properly
0.3 Tue Dec 17 10:29:27
-
Restructured a little bit
-
Fixed some mis-parsing cases
0.2 Unknown
-
Added test script
0.1 Thu Dec 06 16:50:23 2002
-
original version