From f26c5e7afcdf7316dc138952eab4cc5a607c1edd Mon Sep 17 00:00:00 2001 From: Chris Jerdonek Date: Sat, 21 Jan 2012 16:12:19 -0800 Subject: Moved some of the partial logic from RenderEngine to Parser. --- pystache/parser.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'pystache/parser.py') 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: -- cgit v1.2.1