1Revision history for Text::Template 2 31.56 2019-07-09 4 - Fix typos in Changes 5 61.55 2019-02-25 7 - Improve AppVeyor tests for older Perls (Thanks Roy Ivy) 8 - Check for Test::More 0.94 and skip tests if not installed where 9 done_testing() is used (Thanks Roy Ivy). 10 - Improve workaround for broken Win32 File::Temp taint failure (Thanks Roy Ivy). 11 - Skip/todo tests which fail under Devel::Cover (Thanks Roy Ivy) 12 - Add checks and skip_all checks for non-core test modules (Thanks Roy Ivy) 13 141.54 2019-01-13 15 - Fix tempfile creation during tests on Win32 16 171.53 2018-05-02 18 - Add support for decoding template files via ENCODING constructor arg 19 [github #11] 20 - Docs cleanup: replace indirect-object style examples and use class method 21 style constructor calls in the POD docs 22 - Docs cleanup: remove hard tabs from POD, replace dated, unfair synopsis 23 [github #5], convert "THANKS" section to a POD list 24 251.52 2018-03-19 26 - Fix possible 'Subroutine ... redefined' warning (Github #10) 27 281.51 2018-03-04 29 - Add test for nested tags breakage that happened in v1.46 30 - Turn off strict+warnings in sections where template code is eval'ed 31 [github #9] 32 331.50 2018-02-10 34 *** Revert support for identical start/end delimiters (e.g.: @@foo@@, XXfooXX) 35 due to breakage with nested tags (see 36 https://github.com/mschout/perl-text-template/issues/8). Will revisit 37 this in a future release. 38 391.49 2018-02-07 40 - Fix failing tests in v1.48 under perl < 5.8.9 41 421.48 2018-02-07 43 - remove COPYING and Artistic files from the dist. These are replaced by 44 the Dist::Zilla generated LICENSE file. 45 - use strict/warnings (thanks Mohammad S Anwar) 46 - remove $VERSION checks from tests. This makes it easier to run the test 47 with Dist::Zilla and avoids maintenance issue of updating the tests for 48 each release (Thanks Andrew Ruder). 49 - Allow precompiled templates to work with preprocessing [#29928] (Thanks 50 Nik LaBelle) 51 - Add "strict" option to fill_in(). This adds "use strict" and "use vars 52 (...)" to the prepend section, and only the keys of the HASH option are 53 allowed in the template. (Thanks Desmond Daignault, Kivanc Yazan, CJM) 54 [55696] 55 - Fix templates with inline comments without newline after comment for perl 56 < 5.18 [34292] 57 - Don't use bareword file handles 58 - use three arg form of open() 59 - Fix BROKEN behaviour so that it returns the text accumulated so far on 60 undef as documented [28974] 61 - Source code cleanups 62 - Minimum perl version is now 5.8.0 63 - Allow start/end delimiters to be identical (e.g.: @@foo@@, XXfooXX) 64 (Thanks mirod) [46639] 65 - Fix + document the FILENAME parameter to fill_in() (Thanks VDB) [106093] 66 - Test suite cleanups: 67 + turn on strict/warnings for all tests 68 + run tests through perltidy and formatting cleanup 69 + remove number prefixes from test names 70 + use Test::More instead of generating TAP by hand 71 + use three-arg form of open() 72 + don't use indirect object syntax 73 + don't use bareword file handles 74 + use File::Temp to generate temporary files 75 761.47 2017-02-27 77 - Fix longstanding memory leak in _scrubpkg() [#22031] 78 - Fix various spelling errors [#86872] 79 80NOTE: Changes for versions prior to 1.47 have been imported from README 81 821.46 2013-02-11 83 - Thanks to Rik Signes, there is a new 84 Text::Template->append_text_to_output method, which Text::Template always 85 uses whenever it wants to emit output. You can subclass this to get 86 control over the output, for example for postprocessing. 87 - A spurious warning is no longer emitted when the TYPE parameter to ->new 88 is omitted. 89 901.45 2008-04-16 91 921.44 2003-04-29 93 - This is a maintenance release. There are no feature changes. 94 - _scrubpkg, which was responsible for eptying out temporary packages after 95 the module had done with them, wasn't always working; the result was 96 memory leaks in long-running applications. This should be fixed now, and 97 there is a test in the test suite for it. 98 - Minor changes to the test suite to prevent spurious errors. 99 - Minor documentation changes. 100 1011.43 2002-03-25 102 - The ->new method now fails immediately and sets $Text::Template::ERROR if 103 the file that is named by a filename argument does not exist or cannot be 104 opened for some other reason. Formerly, the constructor would succeed 105 and the ->fill_in call would fail. 106 1071.42 2001-11-05 108 - This is a maintenance release. There are no feature changes. 109 - Fixed a bug relating to use of UNTAINT under perl 5.005_03 and possibly 110 other versions. 111 - Taint-related tests are now more comprehensive. 112 1131.41 2001-09-04 114 - This is a maintenance release. There are no feature changes. 115 - Tests now work correctly on Windows systems and possibly on other 116 non-unix systems. 117 1181.40 2001-08-30 119 *** INCOMPATIBLE CHANGE *** 120 - The format of the default error message has changed. It used to look 121 like: 122 123 Program fragment at line 30 delivered error ``Illegal division by zero'' 124 125 It now looks like: 126 127 Program fragment delivered error ``Illegal division by zero at catalog.tmpl line 37'' 128 129 Note that the default message used to report the line number at which the 130 program fragment began; it now reports the line number at which the error 131 actually occurred. 132 133 *** INCOMPATIBLE CHANGE *** 134 - The format of the default error message has changed. It used to look like: 135 136 Program fragment at line 30 delivered error ``Illegal division by zero'' 137 138 It now looks like: 139 140 Program fragment delivered error ``Illegal division by zero at catalog.tmpl line 37'' 141 142 - Note that the default message used to report the line number at which the 143 program fragment began; it now reports the line number at which the error 144 actually occurred. 145 - New UNTAINT option tells the module that it is safe to 'eval' code even 146 though it has come from a file or filehandle. 147 - Code added to prevent memory leaks when filling many templates. Thanks 148 to Itamar Almeida de Carvalho. 149 - Bug fix: $OUT was not correctly initialized when used in conjunction 150 with SAFE. 151 - You may now use a glob ref when passing a filehandle to the ->new 152 function. Formerly, a glob was required. 153 - New subclass: Text::Template::Preprocess. Just like Text::Template, but 154 you may supply a PREPROCESS option in the constructor or the fill_in 155 call; this is a function which receives each code fragment prior to 156 evaluation, and which may modify and return the fragment; the modified 157 fragment is what is evaluated. 158 - Error messages passed to BROKEN subroutines will now report the correct 159 line number of the template at which the error occurred: 160 161 Illegal division by zero at template line 37. 162 163 - If the template comes from a file, the filename will be reported as well: 164 165 Illegal division by zero at catalog.tmpl line 37. 166 167 - New UNTAINT option tells the module that it is safe to eval template code 168 even if it has come from a file or filehandle, disabling taint checking 169 in these cases. 170 - Code added to prevent memory leaks when filling many templates. Thanks to 171 Itamar Almeida de Carvalho. 172 - Bug fix: $OUT was not always correctly initialized when used in 173 conjunction with SAFE. 174 - You may now use a glob ref when passing a filehandle to the new function. 175 Formerly, a glob was required. 176 - Error messages passed to BROKEN subroutines will now report the correct 177 line number of the template at which the error occurred: 178 179 Illegal division by zero at template line 37. 180 181 If the template comes from a file, the filename will be reported as well: 182 183 Illegal division by zero at catalog.tmpl line 37. 184 185 - New subclass: Text::Template::Preprocess. Just like Text::Template, but 186 you may supply a PREPROCESS option in the fill_in call; this is a 187 function which receives each code fragment prior to evaluation, and which 188 may modify and return the fragment; the modified fragment is what is 189 evaluated. 190 1911.31 2001-02-05 192 - Maintenance and bug fix release 193 - fill_in_string was failing. Thanks to Donald L. Greer Jr. for the test case. 194 1951.23 1999-12-21 196 - Small bug fix: DELIMITER and other arguments were being ignored in calls 197 to fill_in_file and fill_this_in. (Thanks to Jonathan Roy for reporting 198 this.) 199 2001.22 201 - You can now specify that certain Perl statements be prepended to the 202 beginning of every program fragment in a template, either per template, 203 or for all templates, or for the duration of only one call to fill_in. 204 This is useful, for example, if you want to enable `strict' checks in 205 your templates but you don't want to manually add `use strict' to the 206 front of every program fragment everywhere. 207 2081.20 1999-03-08 209 - You can now specify that the program fragment delimiters are strings 210 other than { and }. This has three interesting effects: First, it 211 changes the delimiter strings. Second, it disables the special meaning 212 of \, so you have to be really, really sure that the delimiters will not 213 appear in your templates. And third, because of the simplifications 214 introduced by the elimination of \ processing, template parsing is 20-25% 215 faster. See the manual section on `Alternative Delimiters'. 216 - Fixed bug having to do with undefined values in HASH options. In 217 particular, Text::Template no longer generates a warning if you try to 218 give a variable an undefined value. 219 2201.12 1999-02-28 221 - I forgot to say that Text::Template ISA Exporter, so the exported 222 functions never got exported. Duhhh! 223 - Template TYPEs are now case-insensitive. The `new' method now diagnoses 224 attempts to use an invalid TYPE. 225 - More tests for these things. 226 2271.11 1999-02-25 228 - Fixed a bug in the way backslashes were processed. The 1.10 behavior was 229 incompatible with the beta versions and was also inconvenient. (`\n' in 230 templates was replaced with `n' before it was given to Perl for 231 evaluation.) The new behavior is also incompatible with the beta 232 versions, but it is only a little bit incompatible, and it is probably 233 better. 234 - Documentation for the new behavior, and tests for the bug. 235 2361.10 1999-02-13 237 - New OUTPUT option delivers template results directly to a filehandle 238 instead of making them into a string. Saves space and time. 239 - PACKAGE and HASH now work intelligently with SAFE. 240 - Fragments may now output data directly to the template, rather than 241 having to arrange to return it as a return value at the end. This means 242 that where you used to have to write this: 243 244 { my $blist = ''; 245 foreach $i (@items) { 246 $blist .= qq{ * $i\n}; 247 } 248 $blist; 249 } 250 251 You can now write this instead, because $OUT is special. 252 253 { foreach $i (@items) { 254 $OUT.= " * $i\n"; 255 } 256 } 257 258 (`A spoonful of sugar makes the medicine go down.') 259 - Fixed some small bugs. Worked around a bug in Perl that does the wrong 260 thing with $x = <Y> when $x contains a glob. 261 - More documentation. Errors fixed. 262 - Lots more tests. 263 2641.03 1999-02-06 265 - Code added to support HASH option to fill_in. (Incl. `_gensym' 266 function.) 267 - Documentation for HASH. 268 - New test file for HASH. 269 - Note about failure of lexical variables to propagate into templates. Why 270 does this surprise people? 271 - Bug fix: program fragments are evaluated in an environment with `no 272 strict' by default. Otherwise, you get a lot of `Global symbol "$v" 273 requires explicit package name' failures. Why didn't the test program 274 pick this up? Because the only variable the test program ever used was 275 `$a', which is exempt. Duhhhhh. 276 - Fixed the test program. 277 - Various minor documentation fixes. 278 2791.00 1999-02-05 280 This is a complete rewrite. The new version delivers better functionality 281 but is only 2/3 as long, which I think is a good sign. It is supposed to be 282 100% backward-compatible with the previous versions. With one cosmetic 283 change, it passes the test suite that the previous versions passed. If you 284 have compatibility problems, please mail me immediately. 285 286 - At least twice as fast 287 - Better support for filling out the same template more than once 288 - Now supports evaluation of program fragments in Safe compartments. 289 (Thanks, Jonathan!) 290 - Better argument syntax 291 - More convenience functions 292 - The parser is much better and simpler 293 - Once a template is parsed, the parsed version is stored so that 294 it needn't be parsed again. 295 - BROKEN function behavior is rationalized. You can now pass an 296 arbitrary argument to your BROKEN function, or return a value 297 from it to the main program. 298 - Documentation overhauled. 299 300Previous Versions 301 - Maintained by Mark Jason Dominus (MJD) 302