0.026 2012-02-24 T. R. Wyant Add support for \F (fold case), added in 5.15.8. 0.025 2012-01-04 T. R. Wyant Tolerate leading and trailing white space around the regular expression. These are still round-trip safe, since the white space is tokenized. Make Changes file conform to CPAN::Changes, and add xt/author/changes.t to ensure continued compliance. 0.024 2011-12-17 T. R. Wyant Reinstate author test xt/author/manifest.t, which was clobbered shortly before the release of 0.021_10. 0.023 2011-12-08 T. R. Wyant Correct address of FSF in the version of the GPL distributed in LICENSES/Copying. Thanks to Petr Pisar for picking this up. 0.022 2011-11-24 T. R. Wyant Correct various documentation errors. The default-modifier functionality is no longer considered experimental. No code changes since 0.021_11. 0.021_11 2011-11-15 T. R. Wyant Don't initialize effective modifiers with '^', since that wrongly asserts that /d has been seen somewhere along the line. Implement negation of match-semantic modifiers (e.g. 'no re /u;') by setting the relevant datum to undef. THE DEFAULT-MODIFIER FUNCTIONALITY IS EXPERIMENTAL, AND MAY BE CHANGED WITHOUT NOTICE until the next production release. 0.021_10 2011-11-14 T. R. Wyant Support for default modifiers. This includes: * default_modifiers argument to new() in PPIx::Regexp, PPIx::Regexp::Tokenizer, and PPIx::Regexp::Dumper * Public method modifier_asserted() on PPIx::Regexp, to return whether a given modifier is actually in effect. The results of the modifier() method are unchanged. THIS FUNCTIONALITY IS EXPERIMENTAL, AND MAY BE CHANGED OR REVOKED WITHOUT WARNING. Require Test::More 0.88 for installation. Eliminate all the 'eval { require ... }' logic in favor of 'use Test::More 0.88'. Have Makefile.PL make use of {BUILD_REQUIRES} if it is available. Fix PPIx::Regexp::Token::Whitespace->can_be_quantified() to return false. 0.021 2011-07-22 T. R. Wyant Modified tokenizer to correctly handle a back slash used as a delimiter. I believe. PPIx::Regexp::Dumper now dumps the results of ppi() if that method is present and -verbose is asserted. 0.020 2011-04-02 T. R. Wyant Corrected perl_version_introduced(): \R is now 5.009005 (was 5.000). 0.019 2011-03-01 T. R. Wyant Various corrections to perl_version_introduced(): \X is now 5.006 (was 5.000); \N{name} is now 5.006001 (was 5.006); \N{U+xxxx} is now 5.008 (was 5.006). The \C is now parsed as a PPIx::Regexp::Token::CharClass::Simple. It was previously considered a PPIx::Regexp::Token::Literal. Ensure that \N{$foo} parses as a Unicode literal, not a quantified \N. The ordinal() method returns undef for this. Understand the /aa modifier, introduced with 5.13.10. Report perl_version_introduced() of 5.013010 for the new semantic modifiers when modifying the entire expression. Correct handling of interpolations like ${^foo} and $#{foo}. 0.018 2011-02-16 T. R. Wyant No changes (other than version) since 0.017_02. 0.017_02 2011-01-31 T. R. Wyant Override ppi() in PPIx::Regexp::Token::Interpolation to provide the proper PPI when variable names are bracketed. Properly parse bracketed variable names (I hope!), which may not be subscripted. 0.017_01 2011-01-28 T. R. Wyant Take account of possible '$' or '@' casts before a symbol in an interpolation (e.g. $$foo{bar}, which is equivalent to $foo->{bar}). 0.017 2011-01-26 T. R. Wyant Add the /a modifier to PPI::Regexp::Token::Modifiers, legal only in the (?:...) construction. This was introduced in Perl 5.13.9. When parsing an interpolation from a replacement string (rather than a regular expression), take subscripts at face value rather than trying to disambiguate them from quantifiers and character classes, which they can't be in this context. 0.016 2011-01-05 T. R. Wyant The PPIx::Regexp::Token::Code perl_version_introduced() method now returns the minimum Perl version (currently set to 5.000) if it is used to represent the substitution portion of s///e. Update copyright to 2011. 0.015 2010-10-25 T. R. Wyant Documented intent to revoke support for features introduced in a development Perl which do not make it to a production release. This is necessary because in this case the syntax could be reused with different semantics. Added support for Perl 5.13.6 (?^...) construction. Added support for Perl 5.13.6 d, l, and u modifiers. Fixed inconsistency in perl_version_introduced() results between PPIx::Regexp::Token::Modifier and PPIx::Regexp::Token::GroupType::Modifier. Corrected PPIx::Regexp::Constant RE_CAPTURE_NAME docs, somehow missed back at 0.010_01. 0.014 2010-10-14 T. R. Wyant Recognize \o{...} as a PPIx::Regexp::Token::Literal, with perl_version_introduced() of 5.0013003. Terminate \0.. through \7.. after three characters, as Perl does. These two were brought to my attention by Brian D. Foy's "The Effective Perler" for October 11 2010, http://www.effectiveperlprogramming.com/blog/697 Correct the PPIx::Regexp::Token::Literal ordinal() method for '\b'. As a literal, this is a back space. 0.013 2010-10-10 T. R. Wyant Declare a parse failure if characters are found between the '}' and the ')' of (?{...}) and (??{...}), and rebless the tokens to ::Unknown. Perl does not accept anything here, so I think I should not either. Whitespace tweak in the PPIx::Regexp::Dumper test output for the failures test. Replace the PPI logic in PPIx::Regexp::Token::Code with a call to $tokenizer->find_matching_delimiter(). This is actually the way Perl works, as a look at toke.c and regcomp.c makes clear. Push the perl_version_introduced() back to 5.0 at the request of Alexandr Ciornii, for the potential benefit of Perl::MinimumVersion. This was done mostly by reading the various perlre, perldelta, and perlop documents, so these should be taken with a HUGE grain of salt. 0.012 2010-09-26 T. R. Wyant Track all the features reported as introduced (or removed) in Perl 5.010 back to Perl 5.009005, and report them as such. Report modifier /r as having been introduced in Perl 5.013002, rather than the default of 5.006. 0.011 2010-09-16 T. R. Wyant No changes from 0.010_01. 0.010_01 2010-09-11 T. R. Wyant Remove dependencies on Params::Util and Readonly. The latter was requested by ADAMK for the benefit of Padre. It involved changing the symbols exported from PPIx::Regexp::Constant, but these were documented as private, so ... Parse POSIX character classes [=a=] and [.a.] as PPIx::Regexp::Token::CharClass::POSIX::Unknown, which counts as a parse failure since these are not supported by Perl. Make the PPI::Document created by PPIx::Regexp::Token::Code->ppi() be read only. This means we need PPI 1.116. Cache the document, and ensure the cached result is returned on subsequent calls. 0.010 2010-08-06 T. R. Wyant Fix fatal error in PPIx::Regexp::Token::Code->ppi(). Move author tests from xt/ to xt/author/. 0.009 2010-08-03 T. R. Wyant Recognize s/.../.../ee as being different from s/.../.../e. In particular, the replacement portion of the former is _not_ a Perl expression: it's an interpolatble string, which later gets eval{}'ed. 0.008 2010-07-01 T. R. Wyant Promote methods can_be_quantified() and is_quantifier() from PPIx::Regexp::Token to PPIx::Regexp::Element, so all classes inherit them. They still return true and false respectively. Override can_be_quantified() to return false on PPIx::Regexp, PPIx::Regexp::Structure::Quantifier, PPIx::Regexp::Structure::Regexp, and PPIx::Regexp::Structure::Replacement. Override is_quantifier() to return true on PPIx::Regexp::Structure::Quantifier. Modify PPIx::Regexp::Dumper to be able to display can_be_quantified and is_quantifier for PPIx::Regexp::Node objects when dumping verbosely. Convert internal data to Readonly in PPIx::Regexp::Lexer, PPIx::Regexp::Token::CharClass::Simple, PPIx::Regexp::Token::Structure, and PPIx::Regexp::Tokenizer. Remove leftover boilerplate in PPIx::Regexp::Token::CharClass::Simple. 0.007_01 2010-06-28 T. R. Wyant Explicitly require a minimum Perl of 5.006. Centralized dependencies in inc/PPIx/Regexp/Meta.pm. Removed claim that PPIx::Regexp is alpha code. Docs still say that the interface can be changed, but now it will go through a deprecation cycle. 0.007 2010-04-28 T. R. Wyant PPIx::Regexp::Lexer no longer fails when encountering expressions like m{)}. Instead, it marks the right parenthesis as an unmatched delimiter. 0.006_01 2010-04-23 T. R. Wyant Fixed RT 56864 - PPIx::Regexp::Lexer fails in Perl::Critic under Perl 5.13.0. This was due to the value of a returned $+[0] getting transmogrified before the caller saw it. I never did isolate what triggered the bug. You can now get a tokenizer trace by setting environment value PPIX_REGEXP_TOKENIZER_TRACE to a non-zero numeric value. This is unsupported, though. 0.006 2010-02-26 T. R. Wyant Update copyright from 2009 to 2009-2010. Parse \N{...} in accordance with perl5115delta. The curlys must contain an alpha followed by alphanumerics, spaces, parens, colons, or dashes. \N{ without a matching } is a character class (if legal) followed by a literal '{'. Parse \N inside a character class as PPI::Regexp::Token::Unknown, since Perl 5.11.5 considers this a compile error. A \N{...} inside a character class is still OK. Add method match() to PPIx::Regexp::Tokenizer. This is analogous to capture(), but returns the entire matched string. 0.005 2009-12-26 T. R. Wyant Recognize \N (without curlys), back-ported from Perl 6 into 5.11. Recognize unicode characters as \N{[[:alpha:]] ... rather than \N{[\w\s:] ... This is per the 5.11 documentation, but I think Perl always worked this way. Recognize loose matching of Unicode character classes, and allow '=' in lieu of a single ':' in a Unicode character class (this from Perl 5.11.3). PPIx::Regexp::Dumper now produces the proper output when called with perl_version => 1, test => 1. Describe the typical content of the object in the documentation for PPIx::Regexp::Structure::NamedCapture and PPIx::Regexp::Token::GroupType::NamedCapture. 0.004 2009-11-09 T. R. Wyant Have PPIx::Regexp::Token::Literal correctly recognize when charnames::vianame() is unavailable, and decouple this from the handling of \N{U+hhhh}. Add dependency on Task::Weaken, since depending on Scalar::Util appears not to cut it. Correct the assignment of the license type in Makefile.PL. 0.003 2009-11-05 T. R. Wyant Have PPIx::Regexp::Token::Literal recognize \N{U+hhhh} (where hhhh represents hex digits), and provide its ordinal (hhhh). Remove recognition of \N. (. = any character), which Perl does not do. Fix $re->flush_cache() so that it actually removes $re and only $re from the cache. Add delimiters() method to PPIx::Regexp::Main and PPIx::Regexp. Support this in eg/prenav. Increase test coverage and remove dead code. Count tests in t/parse.t and t/unit.t 0.002 2009-10-28 T. R. Wyant In verbose mode, have PPIx::Regexp::Dumper dump the absolute capture number referred to by a numbered reference. Have eg/preslurp pass its -verbose option to PPIx::Regexp::Dumper Don't use Test::More::isa_ok for the t/basic.t class heritage tests, since some versions of Test::More require a reference for the first argument of isa_ok(). 0.001 2009-10-21 T. R. Wyant Initial release.