diff options
author | Chris Jerdonek <chris.jerdonek@gmail.com> | 2012-05-05 11:39:46 -0700 |
---|---|---|
committer | Chris Jerdonek <chris.jerdonek@gmail.com> | 2012-05-05 13:02:24 -0700 |
commit | f94aa621f125d59ebaf19e9bf110e23a04a10637 (patch) | |
tree | 678e7ef8d3701a419b95bbfe12d146908de8edef /pystache/parser.py | |
parent | 7eef0a68507d1f01464d9ee980483ba2fca10c28 (diff) | |
download | pystache-f94aa621f125d59ebaf19e9bf110e23a04a10637.tar.gz |
Started decoupling Parser from RenderEngine.
Diffstat (limited to 'pystache/parser.py')
-rw-r--r-- | pystache/parser.py | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/pystache/parser.py b/pystache/parser.py index 99f8d13..cb12306 100644 --- a/pystache/parser.py +++ b/pystache/parser.py @@ -52,6 +52,26 @@ class ParsingError(Exception): pass +class VariableNode(object): + + def __init__(self, key): + self.key = key + + def render(self, engine, context): + s = engine._get_string_value(context, self.key) + return engine.escape(s) + + +class LiteralNode(object): + + def __init__(self, key): + self.key = key + + def render(self, engine, context): + s = engine._get_string_value(context, self.key) + return engine.literal(s) + + class Parser(object): _delimiters = None @@ -192,10 +212,10 @@ class Parser(object): return u'' if tag_type == '': - return self.engine._make_get_escaped(tag_key) + return VariableNode(tag_key) if tag_type == '&': - return self.engine._make_get_literal(tag_key) + return LiteralNode(tag_key) if tag_type == '>': return self.engine._make_get_partial(tag_key, leading_whitespace) |