Permalink
Browse files

Added `TemplateStream.dump`.

--HG--
branch : trunk
  • Loading branch information...
1 parent d02fc7d commit 74b510619b887fe50e20ca6c0dbdd71a429c44a8 @mitsuhiko mitsuhiko committed Jun 17, 2008
Showing with 30 additions and 1 deletion.
  1. +2 −0 CHANGES
  2. +1 −1 docs/api.rst
  3. +27 −0 jinja2/environment.py
View
@@ -17,6 +17,8 @@ Version 2.0
This would allow extensions to allow simplified gettext calls in template
data and something similar.
+- added :meth:`jinja2.environment.TemplateStream.dump`.
+
Version 2.0rc1
--------------
(no codename, released on July 9th 2008)
View
@@ -216,7 +216,7 @@ useful if you want to dig deeper into Jinja2 or :ref:`develop extensions
.. autoclass:: jinja2.environment.TemplateStream()
- :members: disable_buffering, enable_buffering
+ :members: disable_buffering, enable_buffering, dump
.. _identifier-naming:
View
@@ -681,6 +681,33 @@ def __init__(self, gen):
self._gen = gen
self.disable_buffering()
+ def dump(self, fp, encoding=None, errors='strict'):
+ """Dump the complete stream into a file or file-like object.
+ Per default unicode strings are written, if you want to encode
+ before writing specifiy an `encoding`.
+
+ Example usage::
+
+ Template('Hello {{ name }}!').stream(name='foo').dump('hello.html')
+ """
+ close = False
+ if isinstance(fp, basestring):
+ fp = file(fp, 'w')
+ close = True
+ try:
+ if encoding is not None:
+ iterable = (x.encode(encoding, errors) for x in self)
+ else:
+ iterable = self
+ if hasattr(fp, 'writelines'):
+ fp.writelines(iterable)
+ else:
+ for item in iterable:
+ fp.write(item)
+ finally:
+ if close:
+ fp.close()
+
def disable_buffering(self):
"""Disable the output buffering."""
self._next = self._gen.next

0 comments on commit 74b5106

Please sign in to comment.