From: Fredrik Tolf Date: Sun, 7 Apr 2013 17:06:40 +0000 (+0200) Subject: Merge branch 'master' into python3 X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=commitdiff_plain;h=cc1126892c7148faadc7b6781acce6a4a99ede5c Merge branch 'master' into python3 Conflicts: wrw/sp/util.py --- cc1126892c7148faadc7b6781acce6a4a99ede5c diff --cc wrw/sp/util.py index df3e6ab,3ea7a8a..ad99e8b --- a/wrw/sp/util.py +++ b/wrw/sp/util.py @@@ -1,4 -1,6 +1,6 @@@ -import StringIO -from wrw import dispatch -import cons ++import io ++from .. import dispatch +from . import cons def findnsnames(el): names = {} @@@ -144,6 -146,12 +146,12 @@@ class formatter(object) def fragment(cls, out, el, *args, **kw): cls(out=out, root=el, *args, **kw).node(el) + @classmethod + def format(cls, el, *args, **kw): - buf = StringIO.StringIO() ++ buf = io.BytesIO() + cls.output(buf, el, *args, **kw) + return buf.getvalue() + def update(self, **ch): ret = type(self).__new__(type(self)) ret.__dict__.update(self.__dict__) @@@ -212,3 -219,20 +220,20 @@@ class indenter(formatter) def start(self): super(indenter, self).start() self.write('\n') + + class response(dispatch.restart): + charset = "utf-8" + doctype = None + formatter = indenter + + def __init__(self, root): - super(response, self).__init__() ++ super().__init__() + self.root = root + + @property + def ctype(self): + raise Exception("a subclass of wrw.sp.util.response must override ctype") + + def handle(self, req): + req.ohead["Content-Type"] = self.ctype + return [self.formatter.format(self.root, doctype=self.doctype, charset=self.charset)]