X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=blobdiff_plain;f=wrw%2Fsp%2Futil.py;h=5138f17de082ac8d85dba6c22b062d8694145a2b;hp=e7d9c291f1ce29f636e7604209a654a72fe29adc;hb=cb66c33fdb75345266af29fc4063bf833100cca5;hpb=2dc07f29089cd00d484e15a87e7eaa00e8c33f2f diff --git a/wrw/sp/util.py b/wrw/sp/util.py index e7d9c29..5138f17 100644 --- a/wrw/sp/util.py +++ b/wrw/sp/util.py @@ -134,14 +134,7 @@ class formatter(object): def end(self, el): pass - def __next__(self): - if self.src is None: - raise StopIteration() - try: - ev, el = next(self.src) - except StopIteration: - self.src = None - ev, el = "$", None + def handle(self, ev, el): if ev == ">": self.starttag(el) elif ev == "/": @@ -156,6 +149,16 @@ class formatter(object): self.start(el) elif ev == "$": self.end(el) + + def __next__(self): + if self.src is None: + raise StopIteration() + try: + ev, el = next(self.src) + except StopIteration: + self.src = None + ev, el = "$", None + self.handle(ev, el) ret = bytes(self.buf) self.buf[:] = b"" return ret @@ -225,6 +228,7 @@ class indenter(formatter): self.atbreak = True self.inline = False self.stack = [] + self.last = None, None def write(self, text): lines = text.split("\n") @@ -258,7 +262,10 @@ class indenter(formatter): def starttag(self, el): if not self.inline: - self.br() + if self.last[0] == "<" and self.last[1].name == el.name: + pass + else: + self.br() self.push(el) self.inline = self.inline or self.inlinep(el) self.curind += self.indent @@ -283,6 +290,10 @@ class indenter(formatter): def end(self, el): self.br() + def handle(self, ev, el): + super().handle(ev, el) + self.last = ev, el + class textindenter(indenter): maxcol = 70