----------------
Features:
- Added support for the following syntax to disable inline evaluation
in a comment:
<!--? comment appears verbatim (no ${...} evaluation) -->
Note that the initial question mark character (?) will be omitted
from output.
- The parser now accepts '<' and '>' in attributes. Note that this is
invalid markup. Previously, the '<' would not be accepted as a valid
attribute value, but this would result in an 'unexpected end tag'
error elsewhere. This fixes issue 38.
- The expression compiler now provides methods ``assign_text`` and
``assign_value`` such that a template engine might configure this
value conversion to support e.g. encoded strings.
Note that currently, the only client for the ``assign_text`` method
is the string expression type.
- Enable template loader for string-based template classes. Note that
the ``filename`` keyword argument may be provided on initialization
to identify the template source by filename. This fixes issue 36.
- Added ``extra_builtins`` option to the page template class. These
builtins are added to the default builtins dictionary at cook time
and may be provided at initialization using the ``extra_builtins``
keyword argument.
Bugfixes:
- If a translation domain is set for a fill slot, use this setting
instead of the macro template domain.
- The Python expression compiler now correctly decodes HTML entities
``'gt'`` and ``'lt'``. This fixes issue 32.
- The string expression compiler now correctly handles encoded text
(when support for encoded strings is enabled). This fixes issue 35.
- Fixed an issue where setting the ``filename`` attribute on a
file-based template would not automatically cause an invalidation.
- Exceptions raised by Chameleon can now be copied via
``copy.copy``. This fixes issue 36.
[leorochael]
- If copying the exception fails in the exception handler, simply
re-raise the original exception and log a warning.