summaryrefslogtreecommitdiff
path: root/pystache/parser.py
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2012-05-05 11:39:46 -0700
committerChris Jerdonek <chris.jerdonek@gmail.com>2012-05-05 13:02:24 -0700
commitf94aa621f125d59ebaf19e9bf110e23a04a10637 (patch)
tree678e7ef8d3701a419b95bbfe12d146908de8edef /pystache/parser.py
parent7eef0a68507d1f01464d9ee980483ba2fca10c28 (diff)
downloadpystache-f94aa621f125d59ebaf19e9bf110e23a04a10637.tar.gz
Started decoupling Parser from RenderEngine.
Diffstat (limited to 'pystache/parser.py')
-rw-r--r--pystache/parser.py24
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)