simpleTAL / simpleTALES (Version 4.1) ------------------------------------- Version 4.1 ----------- New features: - Processing Instructions are now supported in HTML templates. Bug fixes: - The use of "&" in attributes was broken in 4.0 - fixed (thanks to Alain Spineux for the bug report). Version 4.0 ------------ This version of SimpleTAL is not 100% backwards compatible with the 3.x series of releases. Version 4.0 of SimpleTAL requires Python 2.2 or higher. New features: - Added support for minimizing boolean attributes in HTML (minimizeBooleanAtts = 1). - Switched HTML parser library from SGMLParser to HTMLParser. HTMLParser is generally less strict than the SGMLParser, however it doesn't handle unbalanced quotes around attributes (thanks to Carlos Neves for the initial patch). - Python 2.2 or higher supported. - All METAL namespace attributes are automatically omitted, not just those in XML templates. Version 3.13 ------------ New features: - Added support for compiling a template from a DOM tree (thanks to Benjamin Niemann for the patch). - Added support for iterators in the Context (thanks to Kevin Smith for the ideas). Bug fixes: - ElementTree paths can now be used from 'python: path ()' expressions (thanks to Jochen Kupperschmidt for the fix). Version 3.12 ------------ New features: - Integration with ElementTree. - Use Python 2.2's unicode function if available (honours the __unicode__ method) when converting non-unicode variables in the Context. Bug fixes: - Allow sub-classes of string and Unicode strings to be placed in the Context. Version 3.11 ------------ This release changes how HTML templates containing entity references and character references are handled. In previous releases any references contained in the HTML would be passed through to the output intact. In order to solve the double escaping bug described below all character references are now expanded in the output with the exception of <, > and & Bug fixes: - If multiple variable substitutions are used in a single 'string:' path and one failed the whole path would evaluate to an empty string. - When was used was output. - The global variable 'attrs' should be a dictionary, not a list (Thanks to Christoph Zwerschke for the bug report). - Content accessed through attrs would be double escaped. Version 3.10 ------------ New features: - Included API documentation and TAL reference guide with archive. Bug fixes: - Attributes on repeat tags were not correctly kept for nested repeats. (Thanks to Aadish Shrestha for the bug report) Version 3.9 ----------- This is release is focused on improving performance. Compared to version 3.8 the performance of expanding templates is ~45-70% faster. The performance of parsing templates is unchanged. WARNING: IF you rely on the internal workings of SimpleTALES in your application then there will be changes that are required to make use of this version of SimpleTAL. The API for SimpleTAL is however unchanged. New features: - Introduced simpleTALUtils.FastStringOutput which can be used to capture the output of SimpleTAL in a faster manner than StringIO. - Introduced simpleTALES.CachedFuncResult which can be used to wrap functions in the Context, and which cache's the result of the function call to ensure that the function is only called once during template expansion. - TALES no longer wraps all results in ContextVariable instances when returning values to TAL. - Changed copy.copy to {}.copy for performance improvement. - Removed logging.debug() calls from performance critical paths. - Replaced DefaultVariable class with simpleTALES.DEFAULTVALUE - Replaced NothingVariable class with None - Removed NoCallVariable - Removed isDefault, isNothing, isSequence, isCallable, and isTrue from ContextVariable. Version 3.8 ----------- New features: - Added new method getXMLTemplate to simpleTALUtils.TemplateCache - Comments in XML templates are now included in the output if pyxml is installed. - Lists can now be indexed into. Bug fixes: - TAL commands on METAL namespaced elements and vice-versa now work correctly (thanks to Kevin Smith for the bug report). Version 3.7 ----------- New features: - When non-ascii, non-Unicode strings are present in the Context a Unicode error is thrown. Now an ERROR log message indicates that this is the most likely cause of the problem. Bug fixes: - Correction to cgi-example (thanks to Frank Wierzbicki for the patch). - Local defines that reference earlier local defines on one tag now work. - Using default values in a repeat list now work as expected. - Errors during codec conversions will now use 'replace' rather than 'strict' Version 3.6 ----------- New features: - The XML Declaration can now be suppressed by passing suppressXMLDeclaration=1 to the template "expand" method. Bug fixes: - Removed stray 'info' logging call. Version 3.5 ----------- New features: - The 'test' function is now available to code used in 'python:' paths. Usage is the same as zope: test (test1,val1[,test2,val2][,default]). (Thanks to Mark McEahern for the feature request) - Uses PyXML (http://pyxml.sourceforge.net/) to determine the DOCTYPE of XML templates (if installed). (Thanks to Myers Carpenter for the implementation) Bug fixes: - CGI Example fixes. - XML Templates containing attributes with character entities are now output correctly. - HTML Templates with special characters as part of TAL or METAL commands are now handled correctly. - Default encoding is now iso-8859-1 rather than iso8859-1 Version 3.4 ----------- New features: - TemplateCache now uses MTIME rather than CTIME to spot changes to templates. - SimpleTAL is now compatible with PyXML 0.8.2 (Thanks to Myers Carpenter for the testing). - Added support for passing in an XML Doctype when calling template.expand - Added support to maintain XML singleton tags, including use of METAL and TAL on singleton tags. - Added support for using variables in paths (e.g. If colour='blue' then the path 'colourMap/?colour' is equivalent to 'colourMap/blue'). This is not part of the TALES specification, but is supported by Zope. (Thanks to Bastian Kleineidam for the initial implementation). Bug fixes: - If the logging module was not installed exceptions would be thrown when SimpleTAL attempted to log errors - fixed. Version 3.3 ----------- New features: - TemplateCache now supports inputEncoding, allowing HTML templates using character sets other than ISO8859-1 to be used. - Functions path, string, exists, and nocall are available to python: paths. - Functions can now receive parameters via paths by wrapping them in simpleTALES.PathFunctionVariable before placing them into the Context. Bug fixes: - In tal:attributes and tal:define double escaped semi-colons are now handled. - Space after a semi-colon in tal:attributes and tal:define is now handled (thanks to Sean Reifschneider) - Handling of stray quotes at the start and end of attributes shouldn't interfere with python: paths anymore. Version 3.2 ----------- This release incorporates patches from Wichert Akkerman implementing the Python TAL path and moving to string methods instead of using the string module. New features: - The 'python:' path can now be used, pass the parameter 'allowPythonPath=1' to the constructor of SimpleTALES.Context to enable this to be used. - simpleTALUtils now contains a template caching class (TemplateCache) that can be used to cache compiled templates, automatically invalidating the cache if the template file has changed. - The string module is no longer used, replaced by string methods Bug fixes: - Nested repeat variables with the same name are now scoped correctly. - If logging is available all error messages are now suppressed during testing. Version 3.1 ----------- With this release import statements need to be changed. Please now use: from simpletal import simpleTAL, simpleTALES. The API has not changed. New features: - SimpleTAL can now be installed using distutils, thanks to Michael Twomey. Bug fixes: - If tal:repeat and tal:content were used on the same element, the last piece of content would be present twice - fixed. - If a path element inside a string: path evaluated to something other than a string or unicode string, it would not be evaluated. Now an attempt to coerce the value to a string is done using the str function. Version 3.0 ----------- New features: - METAL Support added - The TAL and METAL name-spaces can now be bound to any prefix - When using XML Templates any elements in the TAL or METAL name-space have their start and end tags suppressed. Version 2.3 ----------- Bug fixes: - Using tal:repeat on empty lists would cause an exception to be thrown. Now the repeating elements are removed from the output. Version 2.2 ----------- Bug fixes: - HTML Document type declarations were not being passed through from the template - HTML Comments are now passed through to the output - End tags with no start tag now raise an error rather than failing silently - The first text element in a template is now combined with other text elements - XML Processing Instructions are now passed through the template correctly. Version 2.1 ----------- Bug fixes: - HTML Templates will now suppress the output of close tags for elements that are forbidden to have them in HTML 4.01. Additionally tags that can have no close tag in HTML can still have TAL attributes. This means that HTML templates can still be valid HTML, and produce valid HTML. For example: '' is now valid, and will only output the tag. New features: - A simplification of how local variables are handled brings a 5-10% performance gain Version 2.0 ----------- Complete refactoring of simpleTAL leading to very significant performance improvements. Bug fixes: - Any unknown entity references present in a HTML template were not passed through to the rendered template, now they are. - Attributes created using tal:attributes did not have their values escaped properly New features: - Large performance improvements by splitting the process into two - Templates once compiled can now be re-used, leading to large performance gains Version 1.1 ----------- Bug fixes: - The "structure" keyword when used in XML templates would fail with an exception. New features: - Added test cases for TALES and TAL (both HTML and XML) - Added allowTALInStructure flag to control expansion of TAL attributes Version 1.0 ----------- Initial release.