Index: third_party/pystache/src/parsed.py |
diff --git a/third_party/pystache/src/parsed.py b/third_party/pystache/src/parsed.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..372d96c6664f27eebe4a04a875d306bb6d614119 |
--- /dev/null |
+++ b/third_party/pystache/src/parsed.py |
@@ -0,0 +1,50 @@ |
+# coding: utf-8 |
+ |
+""" |
+Exposes a class that represents a parsed (or compiled) template. |
+ |
+""" |
+ |
+ |
+class ParsedTemplate(object): |
+ |
+ """ |
+ Represents a parsed or compiled template. |
+ |
+ 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. |
+ |
+ """ |
+ |
+ def __init__(self): |
+ self._parse_tree = [] |
+ |
+ def __repr__(self): |
+ return repr(self._parse_tree) |
+ |
+ def add(self, node): |
+ """ |
+ Arguments: |
+ |
+ node: a unicode string or node object instance. See the class |
+ docstring for information. |
+ |
+ """ |
+ self._parse_tree.append(node) |
+ |
+ 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(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) |