summaryrefslogtreecommitdiff
path: root/pystache/parsed.py
diff options
context:
space:
mode:
Diffstat (limited to 'pystache/parsed.py')
-rw-r--r--pystache/parsed.py42
1 files changed, 16 insertions, 26 deletions
diff --git a/pystache/parsed.py b/pystache/parsed.py
index a37565b..e94c644 100644
--- a/pystache/parsed.py
+++ b/pystache/parsed.py
@@ -3,50 +3,40 @@
"""
Exposes a class that represents a parsed (or compiled) template.
-This module is meant only for internal use.
-
"""
class ParsedTemplate(object):
- def __init__(self, parse_tree):
- """
- Arguments:
+ def __init__(self):
+ self._parse_tree = []
- parse_tree: a list, each element of which is either--
-
- (1) a unicode string, or
- (2) a "rendering" callable that accepts a ContextStack instance
- and returns a unicode string.
+ def __repr__(self):
+ return repr(self._parse_tree)
- The possible rendering callables are the return values of the
- following functions:
+ def add(self, node):
+ """
+ Arguments:
- * RenderEngine._make_get_escaped()
- * RenderEngine._make_get_inverse()
- * RenderEngine._make_get_literal()
- * RenderEngine._make_get_partial()
- * RenderEngine._make_get_section()
+ node: a unicode string or node object instance. A node object
+ instance must have a `render(engine, stack)` method that
+ accepts a RenderEngine instance and a ContextStack instance and
+ returns a unicode string.
"""
- self._parse_tree = parse_tree
+ self._parse_tree.append(node)
- def __repr__(self):
- return "[%s]" % (", ".join([repr(part) for part in self._parse_tree]))
-
- def render(self, context):
+ def render(self, engine, context):
"""
Returns: a string of type unicode.
"""
# We avoid use of the ternary operator for Python 2.4 support.
def get_unicode(val):
- if callable(val):
- return val(context)
- return val
+ if type(val) is unicode:
+ return val
+ return val.render(engine, context)
parts = map(get_unicode, self._parse_tree)
s = ''.join(parts)
return unicode(s)
-