some documentation changes
authorArmin Ronacher <armin.ronacher@active-4.com>
Sat, 10 Nov 2007 23:10:17 +0000 (00:10 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Sat, 10 Nov 2007 23:10:17 +0000 (00:10 +0100)
--HG--
branch : trunk

CHANGES
MANIFEST.in
docs/src/designerdoc.txt
docs/src/devrecipies.txt
docs/src/inheritance.txt
docs/src/installation.txt
docs/src/loaders.txt
docs/src/objects.txt
docs/src/scopes.txt
jinja/loaders.py
setup.py

diff --git a/CHANGES b/CHANGES
index c791cd82300f02229aa4108123622e2ded6db20e..2a0a9532da4cad4cc643d4ef582508c942d9f96b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -73,7 +73,7 @@ Version 1.2
   "nonlocal" keyword. This means that you can now override variables
   defined in the outer scope from within a loop.
 
-- ``foo + bar`` is now a simpler alternative to ``foo|string + bar|string``
+- ``foo ~ bar`` is now a simpler alternative to ``foo|string + bar|string``
 
 - `PackageLoader` can now work without pkg_resources too
 
index 60529d613e46bbd6fe76e9739357e4c0c2cf358a..181a4aaefcd7ca255955c0b8dd69d3c5f1874468 100644 (file)
@@ -1,3 +1,4 @@
-include docs/build/*.html
 include Makefile CHANGES LICENSE AUTHORS TODO ez_setup.py
+include docs/build/*.html
+include docs/src/*.txt
 recursive-include tests *
index c0ab8f6cccfc0796be0e8fb657b4ed331b1f2455..1ca741da6ff18e505b662f4362509c060baa0a06 100644 (file)
@@ -67,6 +67,10 @@ this:
         If you have numerical indices you have to use the [] syntax:
     {{ users[0].username }}
 
+*new in Jinja 1.2*: You can now use django like attributes for integer
+indices.  Thus ``{{ foo.0 }}`` is equivalent to ``{{ foo[0] }}``.
+
+
 Loops
 =====
 
@@ -235,6 +239,9 @@ can use expressions. In expressions you can use any of the following operators:
     ``//``  divide the left operand by the right one and return a truncated
             integer result: ``{{ 20 // 7 }}`` is ``2``.
             *added in Jinja 1.1*
+    ``~``   string concatenate a value with another one.  ``{{ foo ~ bar }}``
+            is equivalent to ``{{ foo|string + bar|string }}``.  *added in
+            Jinja 1.1*
     ``*``   multiply the left operand with the right one.
             ``{{ 2 * 2 }}`` would return ``4``.
     ``**``  raise the left operand to the power of the right
@@ -261,6 +268,18 @@ Note that there is no support for any bit operations or something similar.
   instead of ``not foo is bar`` and ``not foo in bar``. All other expressions
   require a prefix notation: ``not (foo and bar)``.
 
+
+With Jinja 1.2 onwards it's possible to replace basic if/else blocks with the
+inline `if` / `else` expression.  The following two examples evaluate to the
+same:
+
+.. source:: jinja
+
+    {{ "something" if expr else "otherthing" }}
+
+    {% if expr %}something{% else %}otherthing{% endif %}
+
+
 Boolean Values
 ==============
 
@@ -376,6 +395,7 @@ You can also specify more than one value:
 For information regarding the visibility of macros have a look at the
 `Scopes and Variable Behavior`_ section.
 
+
 Extended Macro Call
 ===================
 
@@ -465,6 +485,7 @@ templates.
 evaluated in an indepdendent environment by calling `rendertemplate`. See the
 documentation for this function in the `builtins`_ documentation.
 
+
 Filtering Blocks
 ================
 
@@ -489,6 +510,7 @@ Of course you can chain filters too:
 
 returns ``"&lt;b&gt;some text&lt;/b&gt;"``.
 
+
 Defining Variables
 ==================
 
@@ -504,12 +526,14 @@ This should ouput ``foobar``.
 For information regarding the visibility of variables have a look at the
 `Scopes and Variable Behavior`_ section.
 
+
 Reserved Keywords
 =================
 
 Jinja has some keywords you cannot use a variable names. This limitation
-exists to make look coherent. Syntax highlighters won't mess things up and
-you will don't have unexpected output.
+exists to make templates look coherent. Syntax highlighters won't mess things
+up and you won't have the situation that some names work depending on the
+context.
 
 The following keywords exist and cannot be used as identifiers:
 
index 2f97f7d9cb7f35f64b127b28342865e66df6b69d..f0ec3c80b54de908a813e2d3c130dfef7900318a 100644 (file)
@@ -4,6 +4,7 @@ Recipies For Developers
 
 Here some recipies for application developers.
 
+
 Automagic Template Variables
 ============================
 
index 2e3b7d7b3b3ad4ad3617ec2361cf167b6208ac38..0b7941a12e335a70b00c1573d2d99e1564e6eda5 100644 (file)
@@ -69,7 +69,10 @@ A child template might look like this:
 
 The ``{% extends %}`` tag is the key here. It tells the template engine that
 this template "extends" another template. When the template system evaluates
-this template, first it locates the parent.
+this template, first it locates the parent.  It must be always the first tag
+in a template but whitespace or a comment is allowed before.  This was not
+enforced with Jinja 1.0 and 1.1, it does however raise a syntax error with
+1.2 or later.
 
 The filename of the template depends on the template loader. For example the
 ``FileSystemLoader`` allows you to access other templates by giving the
@@ -93,6 +96,7 @@ value from the parent template is used instead.
     two similarly-named ``{% block %}`` tags in a template, that template's
     parent wouldn't know which one of the blocks' content to use.
 
+
 How Inheritance Works Internally
 ================================
 
@@ -138,6 +142,7 @@ an syntax error. Here some examples:
     However the condition is handled at runtime because it's in a valid block
     and defines a new block subtemplates can override.
 
+
 Super Blocks
 ============
 
@@ -156,6 +161,7 @@ to get the data of the parent you can give it an offset:
     {{ super(2) }}
         return the data of the second parent block
 
+
 Block Shortcuts
 ===============
 
index b5b63947706af0d8514c7eb2856296f9bd8c8cfc..5b48a0747efbf21eb9d72d670b8e0a9294aa0574 100644 (file)
@@ -36,8 +36,8 @@ Installing the development version
 If you want to play around with the code
 ----------------------------------------
 
-1.  Install `Subversion`_
-2.  ``svn co http://trac.pocoo.org/repos/jinja/trunk jinja``
+1.  Install `mercurial`_
+2.  ``svn co http://dev.pocoo.org/hg/jinja-main jinja``
 3.  ``cd jinja``
 4.  ``ln -s jinja /usr/lib/python2.X/site-packages``
 
@@ -70,4 +70,4 @@ number.
 .. _download page: http://jinja.pocoo.org/download.html
 .. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools
 .. _easy_install: http://peak.telecommunity.com/DevCenter/EasyInstall
-.. _Subversion: http://subversion.tigris.org/
+.. _mercurial: http://www.selenic.com/mercurial/
index 0112ed3e7215ffa2d7a592991ba8138a5614c404..f4480ace7a2d02c01539769369e813a593dbdad5 100644 (file)
@@ -149,6 +149,7 @@ This mixin requires the `python-memcached`_ library.
 .. _memcached: http://www.danga.com/memcached/
 .. _python-memcached: http://www.tummy.com/Community/software/python-memcached/
 
+
 How Mixin Classes Work
 ======================
 
index 7b0641fa5292cb4d758a3e824bd9209672313626..d1551ac62b95324524778681f7bf212caf6a4ad2 100644 (file)
@@ -5,6 +5,7 @@ Global objects
 This section covers the behavior of global objects in the Jinja namespace and
 also the behavior of their attributes.
 
+
 Functions
 =========
 
index 4938aca2bdefcb1d4ea76809ba8486db361cb0a7..baf8c69811f43e4bb6aca3c3ed3fc59221d8bfa2 100644 (file)
@@ -5,6 +5,7 @@ Scopes and Variable Behavior
 This section of the documentation covers the Jinja behavior regarding
 variable visibility.
 
+
 Scopes
 ======
 
@@ -30,6 +31,7 @@ Defined macros appear on the context as variables. Because of this, they are
 affected by the scoping too. A macro defined inside of a macro is just available
 in those two macros (the macro itself and the macro it's defined in).
 
+
 Template Globals
 ================
 
@@ -106,6 +108,7 @@ You can of course also use the `|default` filter.
     it impossible to use conditional expressions for inclusion in non root
     templates.
 
+
 Undefined Variables
 ===================
 
index ecef455a1c1a6d85cba5d2c555c6e1024986a4c2..24eaa470e7e7875c96087abbaf2c0318ad219a05 100644 (file)
@@ -266,13 +266,15 @@ class MemcachedLoaderMixin(object):
     """
     Uses a memcached server to cache the templates.
 
-    Requires the memcache library from tummy__.
+    Requires the memcache library from `tummy`_ or the cmemcache library
+    from `Gijsbert de Haan`_.
 
     With Jinja 1.2 onwards you can also provide a `client` keyword argument
     that takes an already instanciated memcache client or memcache client
     like object.
 
-    __ http://www.tummy.com/Community/software/python-memcached/
+    .. _tummy: http://www.tummy.com/Community/software/python-memcached/
+    .. _Gisjsbert de Haan: http://gijsbert.org/cmemcache/
     """
 
     def __init__(self, use_memcache, memcache_time=60 * 60 * 24 * 7,
index a07ef8392e288401d11f803a12d83d595c8124f0..a7086c2c3c6cce03e39765bc4dd6d0b688bd7d5b 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -53,19 +53,19 @@ class optional_build_ext(build_ext):
 
 
 setup(
-    name = 'Jinja',
-    version = '1.2',
-    url = 'http://jinja.pocoo.org/',
-    license = 'BSD',
-    author = 'Armin Ronacher',
-    author_email = 'armin.ronacher@active-4.com',
-    description = 'A small but fast and easy to use stand-alone template '
-                  'engine written in pure python.',
+    name='Jinja',
+    version='1.2',
+    url='http://jinja.pocoo.org/',
+    license='BSD',
+    author='Armin Ronacher',
+    author_email='armin.ronacher@active-4.com',
+    description='A small but fast and easy to use stand-alone template '
+                'engine written in pure python.',
     long_description = getdoc(jinja),
     # jinja is egg safe. But because we distribute the documentation
     # in form of html and txt files it's a better idea to extract the files
-    zip_safe = False,
-    classifiers = [
+    zip_safe=False,
+    classifiers=[
         'Development Status :: 5 - Production/Stable',
         'Environment :: Web Environment',
         'Intended Audience :: Developers',
@@ -76,9 +76,9 @@ setup(
         'Topic :: Software Development :: Libraries :: Python Modules',
         'Topic :: Text Processing :: Markup :: HTML'
     ],
-    keywords = ['python.templating.engines'],
-    packages = ['jinja', 'jinja.translators'],
-    data_files = [
+    keywords=['python.templating.engines'],
+    packages=['jinja', 'jinja.translators'],
+    data_files=[
         ('docs', list(list_files('docs/build'))),
         ('docs/txt', list(list_files('docs/src')))
     ],
@@ -86,8 +86,8 @@ setup(
     [python.templating.engines]
     jinja = jinja.plugin:BuffetPlugin
     ''',
-    extras_require = {'plugin': ['setuptools>=0.6a2']},
-    features = {
+    extras_require={'plugin': ['setuptools>=0.6a2']},
+    features={
         'speedups': Feature(
             'optional C-speed enhancements',
             standard = True,
@@ -103,5 +103,5 @@ setup(
             ]
         )
     },
-    cmdclass = {'build_ext': optional_build_ext}
+    cmdclass={'build_ext': optional_build_ext}
 )