From 2bef71e4ae66eade9fd0c0e44b3d2f712cd32b29 Mon Sep 17 00:00:00 2001 From: Chris Jerdonek Date: Sat, 14 Jan 2012 12:05:00 -0800 Subject: Addressed TODO not to use exceptions for flow control in parser. --- pystache/parser.py | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'pystache/parser.py') diff --git a/pystache/parser.py b/pystache/parser.py index 4b35686..5e3131c 100644 --- a/pystache/parser.py +++ b/pystache/parser.py @@ -126,6 +126,11 @@ class Parser(object): match_index += len(leading_whitespace) leading_whitespace = '' + if tag_type == '/': + + # TODO: check that tag key matches section start tag key. + return parse_tree, template[start_index:match_index], end_index + index = self._handle_tag_type(template, parse_tree, tag_type, tag_key, leading_whitespace, start_index, match_index, end_index) # Save the rest of the template. @@ -134,14 +139,9 @@ class Parser(object): return parse_tree def _parse_section(self, template, index_start): - try: - self.parse(template=template, index=index_start) - except EndOfSection as err: - buff = err.parse_tree - template = err.template - index_end = err.index_end + parse_tree, template, index_end = self.parse(template=template, index=index_start) - return buff, template, index_end + return parse_tree, template, index_end def _handle_tag_type(self, template, parse_tree, tag_type, tag_key, leading_whitespace, start_index, match_index, end_index): @@ -177,13 +177,8 @@ class Parser(object): func = engine._make_get_partial(tag_key, leading_whitespace) - elif tag_type == '/': - - # TODO: check that tag key matches section start tag key. - # TODO: don't use exceptions for flow control. - raise EndOfSection(parse_tree, template[start_index:match_index], end_index) - else: + raise Exception("Unrecognized tag type: %s" % repr(tag_type)) parse_tree.append(func) -- cgit v1.2.1