CHANGELOG
=========
List of release changes.
0.45dev
-------
``Wed Jan 05, 2014``
- moving to git repository and project is now tracked through github.
0.44dev
-------
``Wed Jun 22, 2013``
- TTLCompiler that compiles tayra templates can include additional helper
modules and its methods into ``h`` namespace accessible inside the template
script. This configuration is done via ttlcompiler['helpers'] settings.
- TTLCompiler setting `beautify_html` is disabled by default.
- in self-closing tags ``/>`` is replaced with plain ``>``, and while
generating a void-element it is always generated with ``/>``.
- If a tayra tag element that belongs to the class of void-elements,
include a element-content it will be silently ignored, though a warning will
be generated when compiling them.
- added pynamespace library function.
0.43dev
-------
``Wed Jun 12, 2013``
- Added syntax to prune leading and training whitespace of tag's content.
- Refactored tag-handling logic in ast.py module.
- Documentation.
0.42dev
-------
``Wed May 29, 2013``
- CHANGELOG.rst and TODO.rst are web-friendly.
- Removed unwanted glob-patterns from MANIFEST.in
- Sphinx documentation, min-width is set to 970px.
- TTLCompiler compiler implements `pluggdapps.interfaces.ITemplate` interface.
- ``@import`` is now used for importing python modules and ``@include`` is now
used for importing TTL template-modules. Test cases added to verify this.
- Bug fixes while making h.packagedin() calls.
0.41dev
-------
``Tue May 21, 2013``
- Catalog of configuration settings for tayra plugins is automatically
generated using pluggapps' ``pa-script`` and sphinx-documented.
- From tayra command line -c switch accepts a context file containing a
python dictionary as context, which is supplied as template context.
- Plugins are referred using its canonical-name.
- Moved sphinx documentation to docs/ directory.
0.4dev
------
``Tue Mar 12, 2013``
- support inline tags along with text. Eg,
``
hello world how are you``
- Tags can also be nested in a text line. Eg,
``First name : ``
- Added `tagspan` and `textspan` grammar to support nested tags in the same
line.
- Added @@return statement, where template functions can return objects
other than template code. A corresponding popobject() instruction is added.
- Template plugins can define configuration settings using ConfigDict and
default_settings method. Although settings value must always be
string. ``ISettings`` methods added for BaseTTL and other plugins
implemented in tayra.
- Package info (package() entry point) returns list of template plugins
available in tayra package.
- Lexer preserves the token and its line no in ttl text while passing them to
the parser.
- Line no information from lexer are coded in the intermediate python file
in debug mode to accurately map exceptions to the correct line in the
ttl-file.
- Revamped filter block handling in ast and pycode.
- Codegen used __traceback_decorator__ to map exceptions to ttl file location.
- Improved vim-plugin for TTL filetype.
- Expression substitution is made pluggable. Any text within the ``${ ... }``
syntax is now handled by a runtime plugin implementing `ITayraExpression`
interface.
- TTLCompiler['expression.default'] configuration parameter specifies
the default `ITayraExpression` plugin to handle the expression.
- To invoke a specific plugin, ``${- ... }``,
where is the plugin name to handle expression substitution.
- Renamed TTLCompiler['use_tag_plugins'] to TTLCompiler['tag.plugins'].
- ITayraEscFilter specification is merged with ITayraExpression interface
specification.
- TayraExpression plugin `py` added. This plugin is configured as the default
handler for expression substitution.
- TayraExpression plugin `evalpy` added.
- Added test cases for pluggable expression substitution feature.
Instead of blindly importing all utility functions from pluggdapps.utils,
these functions are first imported, individually, into tayra.utils and
then populated into a container object. This container object is finally made
available in template context as ``h``. Eg, ::
${ h.parsecsv( 'one, two, three' ) }
${ h.parsecsvlines( 'one, \\n two,
three' ) }
${ dir(h) }
0.3dev
------
``Sat Jan 05, 2013``
- Migrating tayra to pluggdapps component system.
- Migrating tayra to python 3.2
- Updated test cases and benchmarks to this revision.
0.2dev
------
``Tue Dec 06, 2011``
- Documentation
0.1dev
------
``Sat Nov 05, 2011``
Initial version of tayra. A non-exhaustive list of features and functions
available from tayra.
- ``expression substitution``, substitute dynamic content anywhere in your
document using python expression.
- ``escaping text``, while substituting text, it can be escaped with one or
more filters. While escape-filters themselves can be added as plugins to
tayra.
- ``filter blocks``, process non-template text and substitute the filter block
with processed text (optional). One such example can be a block of python code
that need to do some ``view`` related processing. And ofcourse one can
create any many types of filter-blocks (plugins !!)
- ``control blocks``, make use of control blocks like ``if-elif-else``, to
conditionally select portions of templates. And ``for/while`` loop to repeate
blocks of template text.
- ``functions``, abstract re-usable blocks of templates into functions with its
own local scope and local-context.
- ``import templates``, import templates from other parts of the source tree
into the current template's namespace and access their function blocks.
- ``inheritance``, there is a simple yet powerful idea of inheritance, whereby
templates can have a long chain of inheritance from the base layout. A
template module in the chain can access any other inheriting or inherited
templates using the ``parent`` and ``next`` namespace, while ``self``
namespace provides you the magic of overriding.
- ``how to use``, Can be used via its well-defined API or from command line.