summaryrefslogtreecommitdiff
path: root/pystache/parser.py
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2012-01-14 12:05:00 -0800
committerChris Jerdonek <chris.jerdonek@gmail.com>2012-01-18 13:26:21 -0800
commit2bef71e4ae66eade9fd0c0e44b3d2f712cd32b29 (patch)
treecc9e3b51f38caaae3b4f90c04d728f53a0ec5a1f /pystache/parser.py
parent58e427d2b5fb4d2a5041ef8a7eb70de849256a58 (diff)
downloadpystache-2bef71e4ae66eade9fd0c0e44b3d2f712cd32b29.tar.gz
Addressed TODO not to use exceptions for flow control in parser.
Diffstat (limited to 'pystache/parser.py')
-rw-r--r--pystache/parser.py21
1 files changed, 8 insertions, 13 deletions
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)