diff options
Diffstat (limited to 'pystache/parsed.py')
-rw-r--r-- | pystache/parsed.py | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/pystache/parsed.py b/pystache/parsed.py index a37565b..372d96c 100644 --- a/pystache/parsed.py +++ b/pystache/parsed.py @@ -3,50 +3,48 @@ """ 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: + """ + Represents a parsed or compiled template. - parse_tree: a list, each element of which is either-- + An instance wraps a list of unicode strings and node objects. A node + object must have a `render(engine, stack)` method that accepts a + RenderEngine instance and a ContextStack instance and returns a unicode + string. - (1) a unicode string, or - (2) a "rendering" callable that accepts a ContextStack instance - and returns a unicode string. + """ - The possible rendering callables are the return values of the - following functions: + def __init__(self): + self._parse_tree = [] - * RenderEngine._make_get_escaped() - * RenderEngine._make_get_inverse() - * RenderEngine._make_get_literal() - * RenderEngine._make_get_partial() - * RenderEngine._make_get_section() + def __repr__(self): + return repr(self._parse_tree) + def add(self, node): """ - self._parse_tree = parse_tree + Arguments: - def __repr__(self): - return "[%s]" % (", ".join([repr(part) for part in self._parse_tree])) + node: a unicode string or node object instance. See the class + docstring for information. + + """ + self._parse_tree.append(node) - 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 + def get_unicode(node): + if type(node) is unicode: + return node + return node.render(engine, context) parts = map(get_unicode, self._parse_tree) s = ''.join(parts) return unicode(s) - |