+ def endtag(self, el):
+ il = self.inline
+ self.pop()
+ if il or (self.last[0] == ">" and self.last[1] == el):
+ self.lastendbr = False
+ else:
+ self.br()
+ self.lastendbr = True
+ super(indenter, self).endtag(el)
+
+ def start(self, el):
+ super(indenter, self).start(el)
+ self.atbreak = True
+
+ def end(self, el):
+ self.br()
+
+ def handle(self, ev, el):
+ super(indenter, self).handle(ev, el)
+ self.last = ev, el
+
+class textindenter(indenter):
+ maxcol = 70
+
+ def text(self, el):
+ left = unicode(el)
+ while True:
+ if len(left) + self.col > self.maxcol:
+ bp = max(self.maxcol - self.col, 0)
+ for i in xrange(bp, -1, -1):
+ if left[i].isspace():
+ while i > 0 and left[i - 1].isspace(): i -= 1
+ break
+ else:
+ for i in xrange(bp + 1, len(left)):
+ if left[i].isspace():
+ break
+ else:
+ i = None
+ if i is None:
+ self.quotewrite(left)
+ break
+ else:
+ self.quotewrite(left[:i])
+ self.br()
+ left = left[i + 1:].lstrip()
+ else:
+ self.quotewrite(left)
+ break