From f94aa621f125d59ebaf19e9bf110e23a04a10637 Mon Sep 17 00:00:00 2001 From: Chris Jerdonek Date: Sat, 5 May 2012 11:39:46 -0700 Subject: Started decoupling Parser from RenderEngine. --- pystache/parser.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'pystache/parser.py') 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) -- cgit v1.2.1