2003/08/29 Added a patch from Andrew Eland that provides a warning if you have a macro definition that runs away to the end of the file. 2000/04/27 Reduced amount of internal error checking for marginal speed improvements. Class is now inheritable. I've reached a kind of watershed with this module: it does the pre-processing I want it to do, but because I opted for power vs speed it is best used for batch work rather than on-the-fly processing. There are also several modules that do similar things but with different tradeoffs. Feedback on what you use it for, what it lacks, etc would be helpful in deciding where to go with it. 2000/02/22 Minor correction to _croak so that error messages don't list filename and line twice. 2000/02/18 Corrected tarball so that make test will work. Additional tests to macroscript.t would be welcome. 2000/02/06 Wrote skeletal test program. It does hardly anything yet but at least its a start. 2000/02/01 Literal #s should always be escaped if they are followed by digits but need not be otherwise. Missing parameters now carps rather than croaks (unless you try to use a missing parameter in which case we croak). 2000/01/30 Literal #s will now rarely have to be escaped in script or macro bodies. Added new example macro which is used to produce menus on pages to html.macro. 2000/01/25 Made the relevant macroutil.pl functions XHTML compliant. 2000/01/24 You can now have literal #s in macro and script bodies providing you escape them, i.e. # is signified by \#. This is thanks to Richard Bradbury who spotted that this is a problem for HTML work, e.g. something like as a macro body gave a missing parameter error. Now you can now write things like this: $Macro->define( -macro, 'GREY', '#0' ) ; which would be used (in embedded style) thus: The text is coloured <:GREY[grey]:>. Updated the documentation to reflect this plus added some text on how to convert macros into scripts. Note that you can no longer have nuls in macro and script bodies. In the case of a macro make it a script and for a script represent a nul as chr(0). Added an image function to macroutil.pl. 2000/01/15 All the exportable functions have now been moved to a function library called macroutil.pl. This library has two new functions imageif which can be used to include images (e.g. updated) up until specified dates and copyright. The macro language now supports %REQUIRE[yourlibrary.pl] so you can load in the supplied library and/or your own function libraries which is a far cleaner and more versatile approach than adding the functions to Text::MacroScript itself. 2000/01/14 Moved relpath function to Text::MacroScript.pm so it is now accessible either by use Text::MacroScript qw( relpath ) or by calling it at Text::MacroScript::relpath. Added abspath and today importable functions. Various internal improvements, plus bug fixes to variable handling. html.macro example now includes examples of macro, script and variable usage. 2000/01/08 Added &main::relpath function for use in macros; now supply an example macro file for html processing, html.macro, which includes example macros for inserting `new' or `updated' images up until a user-specified expiry date. 1999/11/24 Now croaks gracefully if it cannot open a file. Added --dir (target directory) option to macrodir. 1999/11/15 Added macrodir to the bundle. 1999/09/21 Updated the ordered array code to be more efficient (as per errata for the Wolf book). 1999/09/19 Macros and scripts are now stored in an ordered array. The tradeoffs of this are: slightly slower define for new macros and scripts; faster expansion (up to 40%). (The implementation of variables has not been changed.) Since one would expect most scenarios to involve relatively few (10's, 100's) of definitions, but lots of expansion, (100's, 1000's or 10,000's lines) this should improve overall performance. For greater insertion speed we'd need to use either a balanced binary tree or a B*tree. 1999/09/11 Removed study. Treats newline as any other character so you can process lines, paragraphs or entire files with identical results. 1999/09/10 Renamed package Text::MacroScript.pm as per John Porter's (CPAN) suggestion. 1999/09/07 Added support for embedded processing. 1999/09/04 localised $_ before eval calls. 1999/09/02 Minor documentation corrections. 1999/09/01 Minor documentation corrections. 1999/08/29 Minor documentation corrections. 1999/08/28 Minor documentation corrections. 1999/08/22 Version 1.00. 1999/08/18 Created.