Fixed a bug in the i18n extraction option handling and added a silent option.
authorArmin Ronacher <armin.ronacher@active-4.com>
Thu, 15 Dec 2011 10:50:27 +0000 (11:50 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Thu, 15 Dec 2011 10:50:27 +0000 (11:50 +0100)
CHANGES
docs/extensions.rst
docs/integration.rst
jinja2/ext.py

diff --git a/CHANGES b/CHANGES
index 84da6846bb26f8ff132e8bf18c9a7c1a8c577d71..7f3388d8ef01e5acb1e38df8907be161c6bfc2d1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,6 +9,7 @@ Version 2.7
   separately in order to work in combination with module loaders as
   advertised.
 - Fixed filesizeformat.
+- Added a non-silent option for babel extraction.
 
 Version 2.6
 -----------
index c6b6ec9e3f3ec336248f413b5b016871c8937a10..357f592101f74cd5a16a68ec8a41e3f2edb260bf 100644 (file)
@@ -34,7 +34,7 @@ translatable and calls `gettext`.
 
 After enabling dummy `_` function that forwards calls to `gettext` is added
 to the environment globals.  An internationalized application then has to
-provide at least an `gettext` and optoinally a `ngettext` function into the
+provide at least an `gettext` and optionally a `ngettext` function into the
 namespace.  Either globally or for each rendering.
 
 Environment Methods
index 1875711df49143b38b880111ef2cbb4ae01c979f..e5c76dc44856a414a74556ab1cd9582e30c0c600 100644 (file)
@@ -38,6 +38,15 @@ that templates use ``%`` as `line_statement_prefix` you can use this code:
 of import paths as `extensions` value.  The i18n extension is added
 automatically.
 
+.. versionchanged:: 2.7
+
+   Until 2.7 template syntax errors were always ignored.  This was done
+   since many people are dropping non template html files into the
+   templates folder and it would randomly fail.  The assumption was that
+   testsuites will catch syntax errors in templates anyways.  If you don't
+   want that behavior you can add ``silent=false`` to the settings and
+   exceptions are propagated.
+
 .. _mapping file: http://babel.edgewall.org/wiki/Documentation/messages.html#extraction-method-mapping-and-configuration
 
 Pylons
index 5ba6efdbf870aae8334a06c8ed2e14eb639c7254..206756fe7921f13fcffdde556476d1b011aa2bd0 100644 (file)
@@ -552,6 +552,10 @@ def babel_extract(fileobj, keywords, comment_tags, options):
        The `newstyle_gettext` flag can be set to `True` to enable newstyle
        gettext calls.
 
+    .. versionchanged:: 2.7
+       A `silent` option can now be provided.  If set to `False` template
+       syntax errors are propagated instead of being ignored.
+
     :param fileobj: the file-like object the messages should be extracted from
     :param keywords: a list of keywords (i.e. function names) that should be
                      recognized as translation functions
@@ -571,8 +575,10 @@ def babel_extract(fileobj, keywords, comment_tags, options):
         extensions.add(InternationalizationExtension)
 
     def getbool(options, key, default=False):
-        options.get(key, str(default)).lower() in ('1', 'on', 'yes', 'true')
+        return options.get(key, str(default)).lower() in \
+            ('1', 'on', 'yes', 'true')
 
+    silent = getbool(options, 'silent', True)
     environment = Environment(
         options.get('block_start_string', BLOCK_START_STRING),
         options.get('block_end_string', BLOCK_END_STRING),
@@ -596,6 +602,8 @@ def babel_extract(fileobj, keywords, comment_tags, options):
         node = environment.parse(source)
         tokens = list(environment.lex(environment.preprocess(source)))
     except TemplateSyntaxError, e:
+        if not silent:
+            raise
         # skip templates with syntax errors
         return