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<Tree::Trie> 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<quotemeta>
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!)