Metadata-Version: 1.0
Name: z3c.pt
Version: 0.8.5
Summary: An implementation of the TAL template language.
Home-page: UNKNOWN
Author: Malthe Borch
Author-email: mborch@gmail.com
License: ZPL
Description: Overview
        --------
        
        The z3c.pt package provides an alternative implementation of the TAL
        template language including i18n. It also provides a simple text
        template class that allows expression interpolation.
        
        Casual benchmarks pegs it 11x more performant than ``zope.pagetemplate``.
        
        In a nutshell:
        
        * Templates are parsed and compiled into Python bytecode
        * While rendering only Python code is executed and no parsing happens
        * Pluggable expression implementation
        * Support for expression interpolation using the ${<expression>}-format
        * Non-XML friendly
        
        Note: The METAL macro language is not supported.
        
        
        Usage
        -----
        
        See README.txt inside package for general usage; to register the
        default expression types, load the package component configuration
        file (configure.zcml).
        
        
        Template and expression language
        --------------------------------
        
        The template and expression language is based loosely on the TAL 1.4
        specification*. Some notable changes:
        
        1. Tuples are allowed in the tal:define statement:
        
        tal:define="(a, b, c) [1, 2, 3]"
        
        2. Generators are allowed in tal:repeat statements. Note that the
        repeat variable is not available in this case.
        
        tal:repeat="i <some generator>"
        
        3. Attribute-access to dictionary entries is allowed in
        Python-expressions, e.g.
        
        dictionary.key
        
        can be used instead of ``dictionary['key']``.
        
        4. Expression interpolation is allowed in attributes and HTML content.
        
        <a href="mailto:${context.email}">${context.email}</a>
        
        5. Default expression type can be set using ``tal:default-expression``.
        This is an alternative to providing the expression type before each
        expression.
        
        .. _TAL: http://wiki.zope.org/ZPT/TALSpecification14
        
        
        Development
        -----------
        
        If you want to use the code directly from trunk (recommended only for
        development and testing usage), provide ``z3c.pt==dev`` as your
        dependency.
        
        http://svn.zope.org/z3c.pt/trunk#egg=z3c.pt-dev
        
        Changelog
        ---------
        
        Version 0.8.x
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - Fixed interpolation edge case bugs.
        [malthe]
        
        - Added new `Z3C_PT_FILECACHE` environment variable pointing to a directory.
        If set, this will be used to cache the compiled files.
        
        - Added a second variation of the repeat clause, using a simple for loop. It
        doesn't support the repeatdict, though and is therefor not used yet. Also
        began work to add introspection facilities to clauses about the variables
        being used in them. The simpler loop causes the benchmarks to go up to a
        10.5 (old 9.5) for path expressions and 14.5 (12.5) for python expressions.
        So the next step is to introduce an optimization phase, that can decide
        which variant of the loops to use.
        
        - Made the debug mode independent from the Python debug mode. You can now
        specify an environment variable called `Z3C_PT_DEBUG` to enable it.
        
        - Added some code in a filecache module that can later be used to write out
        and reload the compiled Python code to and from the file system. We should
        be able to avoid reparsing on Python process restart.
        
        - Simplified the generated _escape code. cgi.escape's second argument is a
        simple boolean and not a list of characters to quote.
        
        - Use a simple list based BufferIO class instead of a cStringIO for the out
        stream. Avoiding the need to encode Unicode data is a bigger win. We do
        not support arbitrarily mixing of Unicode and non-ascii inside the engine.
        
        - Merged two adjacent writes into one inside the Tag clause.
        
        - Applied a bunch of micro-optimizations. ''.join({}) is slightly faster
        than ''.join({}.keys()) and does the same. Avoid a try/except for error
        handling in non-debug mode. Test against 'is None' instead of a boolean
        check for the result of the template registry lookup. Made PROD_MODE
        available defined as 'not DEBUG_MODE' in config.py, so we avoid the 'not'
        in every cook-check.
        
        - Added more benchmark tests for the file variants.
        
        - Optimized 'is None' handling in Tag clause similar to the Write clause.
        
        - Made the _out.write method directly available as _write in all scopes, so
        we avoid the method lookup call each time.
        
        - Optimized 'is None' handling in Write clause.
        
        - Slightly refactored benchmark tests and added tests for the file variants.
        
        - In debug mode the actual source code for file templates is written out to
        a <filename>.source file, to make it easier to inspect it.
        
        - Make debug mode setting explicit in a config.py. Currently it is bound to
        Python's __debug__, which is False when run with -O and otherwise True.
        
        - Use a simplified UnicodeWrite clause for the result of _translate calls,
        as the result value is guaranteed to be Unicode.
        
        - Added benchmark tests for i18n handling.
        
        - Added more tests for i18n attributes handling.
        
        - Don't generate empty mappings for expressions with a trailing semicolon.
        
        - Fixed undefined name 'static' error in i18n attributes handling and added
        quoting to i18n attributes.
        
        - Added condition to the valid attributes on tags in the tal namespace.
        
        - Made sure the traceback from the *first* template exception
        is carried over to __traceback_info__
        
        - Added template source annotations on exceptions raised while
        rendering a template.
        
        Version 0.8 - March 19, 2008
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - Added support for 'nocall' and 'not' (for path-expressions).
        
        - Added support for path- and string-expressions.
        
        - Abstracted expression translation engine. Expression implementations
        are now pluggable. Expression name pragmas are supported throughout.
        
        - Formalized expression types
        
        - Added support for 'structure'-keyword for replace and content.
        
        - Result of 'replace' and 'content' is now escaped by default.
        
        - Benchmark is now built as a custom testrunner
        
        Version 0.7 - March 10, 2008
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - Added support for comments; expressions are allowed
        inside comments, i.e.
        
        <!-- ${'Hello World!'} -->
        
        Comments are always included.
        
        Version 0.6 - February 24, 2008
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - Added support for text templates; these allow expression
        interpolation in non-XML documents like CSS stylesheets and
        javascript files.
        
        Version 0.5 - February 23, 2008
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - Expression interpolation implemented.
        
        Version 0.4 - February 22, 2008
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - Engine now uses cStringIO yielding a 2.5x performance
        improvement. Unicode is now handled correctly.
        
        Version 0.3 - December 23, 2007
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - Code optimization; bug fixing spree
        
        - Added ``ViewPageTemplateFile`` class
        
        - Added support for i18n
        
        - Engine rewrite; improved code generation abstractions
        
        Version 0.2 - December 5, 2007
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - Major optimizations to the generated code
        
        Version 0.1 - December 3, 2007
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        - First public release
        
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Topic :: Text Processing :: Markup :: HTML
Classifier: Topic :: Text Processing :: Markup :: XML
Classifier: Topic :: Software Development :: Libraries :: Python Modules
