summaryrefslogtreecommitdiff
path: root/pystache/parser.py
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2012-01-21 16:12:19 -0800
committerChris Jerdonek <chris.jerdonek@gmail.com>2012-01-21 16:12:19 -0800
commitf26c5e7afcdf7316dc138952eab4cc5a607c1edd (patch)
tree48c5c98cce4015ead048bce80bb58d61eb4fb226 /pystache/parser.py
parent792ce17d3fa78c5d23b9d4327c0ea404d7b1b67c (diff)
downloadpystache-f26c5e7afcdf7316dc138952eab4cc5a607c1edd.tar.gz
Moved some of the partial logic from RenderEngine to Parser.
Diffstat (limited to 'pystache/parser.py')
-rw-r--r--pystache/parser.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/pystache/parser.py b/pystache/parser.py
index f74d1bd..f88f61b 100644
--- a/pystache/parser.py
+++ b/pystache/parser.py
@@ -14,6 +14,7 @@ from template import ParsedTemplate
DEFAULT_DELIMITERS = ('{{', '}}')
END_OF_LINE_CHARACTERS = ['\r', '\n']
+NON_BLANK_RE = re.compile(r'^(.)', re.M)
def _compile_template_re(delimiters):
@@ -148,6 +149,7 @@ class Parser(object):
def _handle_tag_type(self, template, parse_tree, tag_type, tag_key, leading_whitespace, end_index):
+ # TODO: switch to using a dictionary instead of a bunch of ifs and elifs.
if tag_type == '!':
return end_index
@@ -178,7 +180,12 @@ class Parser(object):
elif tag_type == '>':
- func = engine._make_get_partial(tag_key, leading_whitespace)
+ template = engine.load_partial(tag_key)
+
+ # Indent before rendering.
+ template = re.sub(NON_BLANK_RE, leading_whitespace + r'\1', template)
+
+ func = engine._make_get_partial(template)
else: