Dolda2000 GitWeb
/
wrw.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Apparently binascii.b2a_* returns bytes.
[wrw.git]
/
wrw
/
sp
/
util.py
diff --git
a/wrw/sp/util.py
b/wrw/sp/util.py
index
e7d9c29
..
931cbdb
100644
(file)
--- a/
wrw/sp/util.py
+++ b/
wrw/sp/util.py
@@
-134,14
+134,7
@@
class formatter(object):
def end(self, el):
pass
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 == "/":
if ev == ">":
self.starttag(el)
elif ev == "/":
@@
-156,6
+149,16
@@
class formatter(object):
self.start(el)
elif ev == "$":
self.end(el)
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
ret = bytes(self.buf)
self.buf[:] = b""
return ret
@@
-225,6
+228,8
@@
class indenter(formatter):
self.atbreak = True
self.inline = False
self.stack = []
self.atbreak = True
self.inline = False
self.stack = []
+ self.last = None, None
+ self.lastendbr = True
def write(self, text):
lines = text.split("\n")
def write(self, text):
lines = text.split("\n")
@@
-258,7
+263,10
@@
class indenter(formatter):
def starttag(self, el):
if not self.inline:
def starttag(self, el):
if not self.inline:
- self.br()
+ if self.last[0] == "<" and self.last[1].name == el.name and self.lastendbr:
+ pass
+ else:
+ self.br()
self.push(el)
self.inline = self.inline or self.inlinep(el)
self.curind += self.indent
self.push(el)
self.inline = self.inline or self.inlinep(el)
self.curind += self.indent
@@
-272,8
+280,11
@@
class indenter(formatter):
def endtag(self, el):
il = self.inline
self.pop()
def endtag(self, el):
il = self.inline
self.pop()
- if not il:
+ if il or (self.last[0] == ">" and self.last[1] == el):
+ self.lastendbr = False
+ else:
self.br()
self.br()
+ self.lastendbr = True
super().endtag(el)
def start(self, el):
super().endtag(el)
def start(self, el):
@@
-283,6
+294,10
@@
class indenter(formatter):
def end(self, el):
self.br()
def end(self, el):
self.br()
+ def handle(self, ev, el):
+ super().handle(ev, el)
+ self.last = ev, el
+
class textindenter(indenter):
maxcol = 70
class textindenter(indenter):
maxcol = 70