diff options
author | Chris Jerdonek <chris.jerdonek@gmail.com> | 2012-05-05 08:16:14 -0700 |
---|---|---|
committer | Chris Jerdonek <chris.jerdonek@gmail.com> | 2012-05-05 08:16:14 -0700 |
commit | 4f85f1f06c3d27683d1fdba563e985fd18c65d9f (patch) | |
tree | 92fa847d60ee46b8543f0ca5a59b20d1a315fdeb /pystache | |
parent | a6105f89965b61a8ae70b5953059d1f986d42abb (diff) | |
download | pystache-4f85f1f06c3d27683d1fdba563e985fd18c65d9f.tar.gz |
Created _make_interpolation_node() and _make_section_node().
Diffstat (limited to 'pystache')
-rw-r--r-- | pystache/parser.py | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/pystache/parser.py b/pystache/parser.py index 12e887e..446ceb8 100644 --- a/pystache/parser.py +++ b/pystache/parser.py @@ -154,20 +154,22 @@ class Parser(object): continue + start_index = end_index + if tag_type == '/': if tag_key != section_key: raise ParsingError("Section end tag mismatch: %s != %s" % (tag_key, section_key)) # Restore previous state with newly found section data. - start_index, content_end_index, parsed_section = end_index, match_index, parsed_template + content_end_index, parsed_section = match_index, parsed_template (tag_type, tag_key, leading_whitespace, end_index, section_key, parsed_template) = states.pop() + node = self._make_section_node(template, tag_type, tag_key, parsed_section, + end_index, content_end_index) else: - start_index = end_index + node = self._make_interpolation_node(tag_type, tag_key, leading_whitespace) - node = self._make_node(template, tag_type, tag_key, leading_whitespace, - end_index, content_end_index, parsed_section) parsed_template.add(node) # Save the rest of the template. @@ -175,8 +177,7 @@ class Parser(object): return parsed_template - def _make_node(self, template, tag_type, tag_key, leading_whitespace, - section_start_index, section_end_index, parsed_section): + def _make_interpolation_node(self, tag_type, tag_key, leading_whitespace): """ Create and return a node of the parse tree. @@ -196,6 +197,17 @@ class Parser(object): if tag_type == '&': return self.engine._make_get_literal(tag_key) + if tag_type == '>': + return self.engine._make_get_partial(tag_key, leading_whitespace) + + raise Exception("Invalid symbol for interpolation tag: %s" % repr(tag_type)) + + def _make_section_node(self, template, tag_type, tag_key, parsed_section, + section_start_index, section_end_index): + """ + Create and return a node of the parse tree. + + """ if tag_type == '#': return self.engine._make_get_section(tag_key, parsed_section, self._delimiters, template, section_start_index, section_end_index) @@ -203,7 +215,4 @@ class Parser(object): if tag_type == '^': return self.engine._make_get_inverse(tag_key, parsed_section) - if tag_type == '>': - return self.engine._make_get_partial(tag_key, leading_whitespace) - - raise Exception("Unrecognized tag type: %s" % repr(tag_type)) + raise Exception("Invalid symbol for section tag: %s" % repr(tag_type)) |