Revision history for Perl extension Regexp::Assemble. 0.19 2005-11-02 15:16:16 UTC - Change croaking diagnostic concerning Default_Lexer. Bug spotted by barbie in ticket #15044. - Pointer to C in the documentation. - Excised Test::Deep probe in 00_basic.t, since the module is no longer used. - Detabbed eg/* 0.18 2005-10-08 20:37:53 UTC - Fixed '\Q[' to be as treated as '\[' instead of '['. What's more, the tests had this as the Right Thing. What was I thinking? Wound up rewriting _lex_stateful in a much less hairier way, even though it now uses gotos. - Introduced a context hash for dragging around the bits and pieces required by the descent into _reduce_path. It doesn't really help much right now, but is vital for solving the qw(be by my me) => /[bm][ey]/ problem. See TODO for more notes. - Fixed the debug output to play nicely with the test harness (by prefixing everything with a #). It had never been a problem, but you never know. - Added a script named 'debugging' to help people figure out why assembled patterns go wonky (which is invariably due to nested parentheses). - Added a script 'tld', that produces a regexp for matching internet Top Level Domain names. This happens to be an ideal example of showing how the alternations are sorted. - Added a script 'roman', that produces a regexp for matching Roman numerals. Just for fun. - Removed the 'assemble-check' script, whose functionality is adequately dealt with via 'assemble -t'. - Tightened up the explanation of why tracked patterns are bulkier - ISOfied the dates in this file. 0.17 2005-09-10 16:41:22 UTC - Add capture() method. - Restructure _insert_path(). - Factor out duplicated code introduced in 0.16 into _build_re(). - Ensure that the test suite exercises the fallback code path for when Storable is missing, even if Storable is available. - Added test_pod_coverage, merely to earn a free Kwalitee point. 0.16 2005-08-22 23:04:02 UTC - Tracked patterns silently ignored imsx flags. Spotted by Bart Lateur. 0.15 2005-04-27 06:50:31 UTC - Oops. Detabbed all the files and did not rerun the tests. t/03_str.t explicitly performs a test on a literal TAB character, and so it failed. Always, always, *ALWAYS* run the test suite as the last task before uploading. Grrr. 0.14 2005-04-27 00:32:43 UTC - Performance tuning release. Played around significantly with _insertr and lex but major improvement will only come about by writing the lexing routine in C. - Reordered $Default_Lexer to bring the most common cases to the front of the pattern. - Inline the effects of \U, \L, \c, \x. This is handled by _lex_stateful (which offloads some of the worst case lexing costs into a separate routine and thus makes the more usual cases run faster). Handling of \Q in the previous release was incorrect. (Sigh). - Backslash slashes. - Passed arrays around by reference between _lex and a newly introduced _insertr routine. - Silenced warning in _slide_tail (ran/reran) - Fixed bug in _slide_tail (didn't handle '0' as a token). One section of the code used to do its own sliding, now it uses _slide_tail. - Fixed bug in _node_eq revealed by 5.6.1 (implicit ordering of hash keys). - Optimized node_offset() - replace ok() in tests by better things (is, like, ...) - removed use of Test::Differences, since it doesn't work on complex structures. 0.13 2005-04-11 21:59:26 UTC - Deal with \Q...\E patterns. - $Default_Lexer pattern fails on 5.6.x: it would lex '\-' as '\', '-'. - Tests to prove that the global $_ is not clobbered by the module. - Used cmp_ok rather than ok where it makes sense. - Added a (belated) DEBUG_LEX debugging mode 0.12 2005-04-11 23:49:16 UTC - Forgot to guard against the possibility of Test::Differences not being available. This would cause erroneous failures in the test suite if it was not installed. - Quotemeta was still giving troubles. Exhaustive testing also turned up the fact that a bare add('0') would be ignored (and thus the null-match pattern would be returned. - More tweaks to the documentation. 0.11 Sat Apr 9 19:44:19 2005 UTC - Performed coverage testing with Devel::Cover Numerous tests added as a result. Borderline bugs fixed (bizarre copy of ARRAY in leave under D::C - fixed in 0.10). - Finalised the interface to using zero-width lookahead assertions. Depending on the match/failure ratio of the pattern to targets, the pattern execution may be slower with ZWLAs than without. Benchmark it. - Made _dump call _dump_node if passed a reference to a hash. This simplifies the code a bit, since one no longer has to worry about whether the thing we are looking at is a node or a path. All in all a minor patch, just to tidy up some loose ends before moving to heftier optimisations. - The fix in 0.10 for quotemeta didn't go far enough. Hopefully this version gets it right. - A number of minor tweaks based on information discovered during coverage testing. - Added documentation about the mailing list. Sundry documentation tweaks. 0.10 2005-03-29 09:01:49 UTC - Correct Default_Lexer$ pattern to deal with the excessively backslashed tokens that C likes to produce. Bug spotted by Walter Roberson. - Added a fix to an obscure bug that Devel::Cover uncovered. The next release will fold in similar improvements found by using Devel::Cover. 0.09 2005-01-22 9:28:21 UTC - Added lookahead assertions at nodes. (This concept is shamelessly pinched from Dan Kogai's Regexp::Optimizer). The code is currently commented out, because in all my benchmarks the resulting regexps are slower with them. Look for calls to _combine if you want to play around with this. - $Default_Lexer and $Single_Char regexps updated to fix a bug where backslashed characters were broken apart between the backslash and the character, resulting in uncompilable regexps. - Character classes are now sorted to the left of a list of alternations. - Corrected license info in META.yml - Started to switch from ok() to cmp_ok() in the test suite to produce human-readable test failures. 0.08 2005-01-03 11:23:50 UTC - Bug in insert_node fixed: did not deal with the following correctly: qw/bcktx bckx bdix bdktx bdkx/ (The assymetry introduced by 'bdix' threw things off, or something like that). - Bug in reduced regexp generation (reinstated code that had been excised from _re_path() et al). - Rewrote the tests to eliminate the need for Test::Deep. Test::More::is_deeply is sufficient. 0.07 2004-12-17 19:31:18 UTC - It would have been nice to have remembered to update the release date in the POD, and the version in the README. 0.06 2004-12-17 17:38:41 UTC - Can now track regular expressions. Given a match, it is possible to determine which original pattern gave rise to the match. - Improved character class generation: . (anychar) was not special-cased, which would have lead to a.b axb giving a[.x]b Also takes into account single-char width metachars like \t \e et al. Filters out digits if \d appears, and for similar metachars (\D, \s, \W...) - Added a pre_filter method, to perform input filtering prior to the pattern being lexed. - Added a flags method, to allow for (?imsx) pattern modifiers. - enhanced the assemble script: added -b, -c, -d, -v; documented -r - Additions to the README - Added Test::Simple and Test::More as prerequisites. 0.05 2004-12-10 11:52:13 UTC - Bug fix in tests. The skip test in version 0.04 did not deal correctly with non-5.6.0 perls that do not have Test::Deep installed. 0.04 2004-12-09 22:29:56 UTC - In 5.6.0, the backlashes in a quoted word list, qw[ \\d ], will have their backslashes doubled up. In this case, don't run the tests. (Reading from a file or getting input from some other source other than qw[] operators works just fine). 0.03 2004-12-08 21:55:27 UTC - Bug fix: Leading 0s could be omitted from paths because of the difference between while($p) versus while(defined($p)). - An assembled pattern can be generated with whitespace. This can be used in conjunction with the /x modifier, and also for debugging. - Code profiled: dead code paths removed, hotspots rewritten to run more quickly. - Documentation typos and wordos. - assemble script now accepts a number of command line switches to control its behaviour. - More tests. Now with Test::Pod. 0.02 2004-11-19 11:16:33 UTC - An R::A object that has had nothing added to it now produces a pattern that explicitly matches nothing (the original behaviour would match anything). - An object can now chomp its own input. Useful for slurping files. It can also filter the input tokens and discard patterns that don't adhere to what's expected (sanity checking e.g.: don't want spaces). - Documented and added functions to allow for the lexer pattern to be manipulated. - The reset() method was commented out (and the test suite didn't catch the fact). - Detabbed the Assemble.pm, eg/* and t/* files (I like interpreting tabs as four spaces, but this produces horrible indentation on www.cpan.org). - t/00_basic.t test counts were wrong. This showed up if Test::Deep was not installed. - t/02_reduce.t does not need to 'use Data::Dumper'. - Tweaked eg/hostmatch/hostmatch; added eg/assemble, eg/assemble-check - Typos, corrections and addtions to the documentation. 0.01 2004-07-09 21:05:18 UTC - original version; created by h2xs 1.19 (seriously!)