OLD | NEW |
(Empty) | |
| 1 # coding: utf-8 |
| 2 |
| 3 """ |
| 4 Exposes a class that represents a parsed (or compiled) template. |
| 5 |
| 6 """ |
| 7 |
| 8 |
| 9 class ParsedTemplate(object): |
| 10 |
| 11 """ |
| 12 Represents a parsed or compiled template. |
| 13 |
| 14 An instance wraps a list of unicode strings and node objects. A node |
| 15 object must have a `render(engine, stack)` method that accepts a |
| 16 RenderEngine instance and a ContextStack instance and returns a unicode |
| 17 string. |
| 18 |
| 19 """ |
| 20 |
| 21 def __init__(self): |
| 22 self._parse_tree = [] |
| 23 |
| 24 def __repr__(self): |
| 25 return repr(self._parse_tree) |
| 26 |
| 27 def add(self, node): |
| 28 """ |
| 29 Arguments: |
| 30 |
| 31 node: a unicode string or node object instance. See the class |
| 32 docstring for information. |
| 33 |
| 34 """ |
| 35 self._parse_tree.append(node) |
| 36 |
| 37 def render(self, engine, context): |
| 38 """ |
| 39 Returns: a string of type unicode. |
| 40 |
| 41 """ |
| 42 # We avoid use of the ternary operator for Python 2.4 support. |
| 43 def get_unicode(node): |
| 44 if type(node) is unicode: |
| 45 return node |
| 46 return node.render(engine, context) |
| 47 parts = map(get_unicode, self._parse_tree) |
| 48 s = ''.join(parts) |
| 49 |
| 50 return unicode(s) |
OLD | NEW |