Jinja
Jinja Changelog
Version 1.1
(codename: sinka, released Jun 1, 2007)
- blocks now support {{ super() }} to render the parent output.
- debugging system improved, smaller filesize for the cached files. Debugging works now well for any module using linecache.
- {{ debug() }} can now be used to get a list of filters and tags.
- the template lexer keeps not track of brace, parenthesis and bracket balance in order to not break variable tags apart if they are configured to look like this: ${expr}. This also fixes the problem with nested dicts in variable expressions.
- it's now possible to configure the variable blocks to look the same as the block delimiters. Thus you can set the syntax to something like { / } for both blocks and variables.
- added whitespace management system for the template designer.
- some small bugfixes.
- improved security system regarding function calls and variable assignment in for loops.
- added lipsum function to generate random text.
- strings without unicode characters are processed as binary strings now to workaround problems with datetime.strftime which only accepts binary strings.
- it's now possible to use newlines in string literals
- developer friendly traceback is now toggleable
- the variable failure is now pluggable by replacing the undefined singleton for an environment instance
- fixed issue with old-style classes not implementing __getitem__ (thanks to Axel Böhm for discovering that bug)
- added a bunch of new docstrings to the Jinja classes. Makes fun now to use pydoc :-)
- fixed severe memcaching bug. Formerly it wasn't possible to use memcaching without enabling disk cache.
- fixed a bug that allowed users to override the special names _, true etc.
- added batch and slice filters for batching or slicing sequences
- added sum, abs, round and sort filters. This fixes #238
- added striptags and xmlattr filters for easier SGML/XML processing
- the trans tag does not need explicit naming for variables with the same name any more. You can now use {% trans foo %} instead of the verbose version {% trans foo=foo %}.
- reimplemented Buffet plugin so that it works at least for pylons
- added Environment.get_translations_for_string
- fixed a bug in the parser that didn't unescape keyword arguments. (thanks to Alexey Melchakov for reporting)
- You can now use the environment to just tokenize a template. This can be useful for syntax highlighting or other purposes.
- added optional C-implementation of the context baseclass.
- you can now use optional parentheses around macro defintions. Thus it's possible to write {% macro foo(a, b, c) %} instead of {% macro foo a, b, c %}.
- additional macro arguments now end up in varargs.
- implemented the {% call %} block. call and endcall can still be used as identifiers until Jinja 1.3
- it's now possible to stream templates.
- fixed a corner case when defining a block inside of a condition
- the cached loader mixin is now able to cache multiple templates from different loaders in the same cache folder.
- Translatable strings returned by _() will leave their string formatting signs untouched. Thanks to Stefan Ebner for reporting.
- {% block name "data" %} is now an alias for {% block name %}data{% endblock %}. Note that the second argument can be an expression. As soon as you specify an expression as second argument the closing tag has to be omitted.
- It's now possible to iterate over iterators additionally to sequences. If the iterator is inifite it will crash however, so makes sure you don't pass something like that to a template!
- added rendetemplate to render included templates in an isolated environment and get the outout back.
- added simplefilter decorator.
- improved ChoiceLoader error reporting (thanks to Bryan McLemore)
- fixed extended slicing
- reworked loader layer. All the cached loaders now have "private" non cached baseclasses so that you can easily mix your own caching layers in.
- added MemcachedLoaderMixin and MemcachedFileSystemLoader contributed by Bryan McLemore.