diff options
author | Eric Florenzano <floguy@gmail.com> | 2009-10-29 02:29:26 -0700 |
---|---|---|
committer | Eric Florenzano <floguy@gmail.com> | 2009-10-29 02:29:26 -0700 |
commit | a28576f6d1550e84da1f3851d8847c6d059b7c4b (patch) | |
tree | 8f21094d85026e342c9f94af6251bc8d295dbf2b | |
parent | 6281f549be6cefbaca011726395cf1cd4b8f8fa9 (diff) | |
download | pystache-a28576f6d1550e84da1f3851d8847c6d059b7c4b.tar.gz |
Compile the regular expression once for the tags, and then re-use it
-rw-r--r-- | pystache/template.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/pystache/template.py b/pystache/template.py index bb56523..4016515 100644 --- a/pystache/template.py +++ b/pystache/template.py @@ -1,6 +1,7 @@ import re SECTION_RE = re.compile(r"{{\#([^\}]*)}}\s*(.+?)\s*{{/\1}}", re.M | re.S) +TAG_RE = re.compile(r"{{(#|=|!|<|>|\{)?(.+?)\1?}}+") class Template(object): tag_types = { @@ -22,6 +23,7 @@ class Template(object): def render_sections(self, template, context): """Expands sections.""" + regexp = re.compile(r"{{\#([^\}]*)}}\s*(.+?)\s*{{/\1}}", re.M | re.S) match = SECTION_RE.search(template) while match: @@ -46,7 +48,7 @@ class Template(object): """Renders all the tags in a template for a context.""" regexp = re.compile(r"{{(#|=|!|<|>|\{)?(.+?)\1?}}+") - match = re.search(regexp, template) + match = TAG_RE.search(template) while match: tag, tag_type, tag_name = match.group(0, 1, 2) func = 'render_' + self.tag_types[tag_type] @@ -55,7 +57,7 @@ class Template(object): replacement = getattr(self, func)(tag_name, context) template = template.replace(tag, replacement) - match = re.search(regexp, template) + match = TAG_RE.search(template) return template |