summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Florenzano <floguy@gmail.com>2009-10-29 02:29:26 -0700
committerEric Florenzano <floguy@gmail.com>2009-10-29 02:29:26 -0700
commita28576f6d1550e84da1f3851d8847c6d059b7c4b (patch)
tree8f21094d85026e342c9f94af6251bc8d295dbf2b
parent6281f549be6cefbaca011726395cf1cd4b8f8fa9 (diff)
downloadpystache-a28576f6d1550e84da1f3851d8847c6d059b7c4b.tar.gz
Compile the regular expression once for the tags, and then re-use it
-rw-r--r--pystache/template.py6
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