add render_file method for html.IRenderable
authorTero Marttila <terom@fixme.fi>
Fri, 05 Jun 2009 23:03:35 +0300
changeset 69 5b53fe294034
parent 68 49388e9fd5fa
child 70 67dd32adf159
add render_file method for html.IRenderable
degal/html.py
--- a/degal/html.py	Fri Jun 05 23:02:47 2009 +0300
+++ b/degal/html.py	Fri Jun 05 23:03:35 2009 +0300
@@ -50,17 +50,27 @@
 
         return self.render_unicode(**render_opts).encode(encoding)
 
-    def render_out (self, stream, encoding, **render_opts) :
+    def render_out (self, stream, encoding=None, **render_opts) :
         """
-            Render output into the given stream, encoding using the given encoding
+            Render output into the given stream, encoding using the given encoding if given.
 
             >>> from StringIO import StringIO; buf = StringIO(); Tag('xx', 'yy').render_out(buf, 'ascii'); buf.getvalue()
             '<xx>\\n\\tyy\\n</xx>\\n'
         """
 
         for line in self.render_lines(**render_opts) :
-            stream.write(line.encode(encoding))
+            if encoding :
+                line = line.encode(encoding)
+
+            stream.write(line)
     
+    def render_file (self, file, encoding=None, **render_opts) :
+        """
+            Render output to given file, overwriteing anything already there
+        """
+
+        self.render_out(self, file.open_write(encoding), **render_opts)
+
     # default output
     __str__ = render_str
     __unicode__ = render_unicode