diff options
Diffstat (limited to 'pystache/parsed.py')
-rw-r--r-- | pystache/parsed.py | 42 |
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) - |