From 08ca99a9934e100d1ce063e686817a8e695c1eac Mon Sep 17 00:00:00 2001 From: Massimo DiPierro Date: Tue, 28 Feb 2012 13:48:37 -0600 Subject: [PATCH] reponse.delimiters, thanks Denes --- CHANGELOG | 1 + VERSION | 2 +- gluon/globals.py | 1 + gluon/template.py | 8 ++++++-- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index cc57318d..40cd362a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -23,6 +23,7 @@ - def index(): return dict(a=gluon.tools.Expose(folder)) - new DAL syntax: db(...).select().group_by_value(db.table.field) (thanks Yair) - auth.is_impersonating() +- reponse.delimiters = ('\\[','\\]') (thanks Denes) - 100's of small bug fixes and small improvements ## 1.99.4 diff --git a/VERSION b/VERSION index 12c6d44b..f151835b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 1.99.4 (2012-02-28 13:16:50) stable +Version 1.99.4 (2012-02-28 13:48:35) stable diff --git a/gluon/globals.py b/gluon/globals.py index 9a9f08b2..92e76f33 100644 --- a/gluon/globals.py +++ b/gluon/globals.py @@ -168,6 +168,7 @@ class Response(Storage): self.menu = [] # used by the default view layout self.files = [] # used by web2py_ajax.html self.generic_patterns = [] # patterns to allow generic views + self.delimiters = ('{{','}}') self._vars = None self._caller = lambda f: f() self._view_environment = None diff --git a/gluon/template.py b/gluon/template.py index 55cb2764..20e08365 100644 --- a/gluon/template.py +++ b/gluon/template.py @@ -228,6 +228,7 @@ class Content(BlockNode): class TemplateParser(object): + default_delimiters = ('{{','}}') r_tag = re.compile(r'(\{\{.*?\}\})', re.DOTALL) r_multiline = re.compile(r'(""".*?""")|(\'\'\'.*?\'\'\')', re.DOTALL) @@ -285,10 +286,13 @@ class TemplateParser(object): # allow optional alternative delimiters self.delimiters = delimiters - if delimiters!=('{{','}}'): + if delimiters != self.default_delimiters: escaped_delimiters = (re.escape(delimiters[0]),re.escape(delimiters[1])) self.r_tag = re.compile(r'(%s.*?%s)' % escaped_delimiters, re.DOTALL) - + elif context['response'].delimiters != self.default_delimiters: + escaped_delimiters = (re.escape(context['response'].delimiters[0]), + re.escape(context['response'].delimiters[1])) + self.r_tag = re.compile(r'(%s.*?%s)' % escaped_delimiters, re.DOTALL) # Create a root level Content that everything will go into. self.content = Content(name=name)