Update of /cvsroot/ht2html/ht2html
In directory sc8-pr-cvs1:/tmp/cvs-serv31621
Modified Files:
htwf.py
Log Message:
Add more elaborate checks here so error messages can make more sense,
and be issued closer to markup where things start to go wrong.
Index: htwf.py
===================================================================
RCS file: /cvsroot/ht2html/ht2html/htwf.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** htwf.py 29 Jul 2003 22:47:07 -0000 1.3
--- htwf.py 30 Jul 2003 21:05:14 -0000 1.4
***************
*** 50,53 ****
--- 50,58 ----
+ BLOCK_TAGS = ('blockquote', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p',
+ 'pre', 'table', 'td', 'th', 'tr')
+ EMPTY_TAGS = ('br', 'hr')
+
+
class HTWF(ht2html.Command):
***************
*** 65,82 ****
p = expat.ParserCreate()
p.StartElementHandler = self.startElement
try:
! p.Parse(newtext, 1)
except expat.ExpatError, e:
print e
except RuntimeError, e:
print e
def startElement(self, name, attrs):
if not name.islower():
! raise RuntimeError("found non-lowercase tag name: " + `name`)
for attrname in attrs.keys():
if not attrname.islower():
! raise RuntimeError("found non-lowercase attribute name: "
! + `attrname`)
--- 70,127 ----
p = expat.ParserCreate()
p.StartElementHandler = self.startElement
+ p.EndElementHandler = self.endElement
+ self.parser = p
+ self.stack = []
try:
! try:
! p.Parse(newtext, 1)
! except:
! if self.quiet:
! print 'Checking %s...' % file
! raise
except expat.ExpatError, e:
print e
+ print "open elements:", " ".join(self.stack)
+ print
except RuntimeError, e:
print e
+ print "discovered on line:", e.lineno
+ print "open elements:", " ".join(self.stack)
+ print
def startElement(self, name, attrs):
if not name.islower():
! err = RuntimeError("found non-lowercase tag name: "
! + tagrepr(name))
! err.lineno = self.parser.ErrorLineNumber
! raise err
for attrname in attrs.keys():
if not attrname.islower():
! err = RuntimeError("found non-lowercase attribute name: "
! + tagrepr(attrname))
! err.lineno = self.parser.ErrorLineNumber
! raise err
! if self.stack and self.stack[-1] in EMPTY_TAGS:
! err = RuntimeError("empty tag not XHTML-adjusted: %s before %s"
! % (tagrepr(self.stack[-1]), tagrepr(name)))
! err.lineno = self.parser.ErrorLineNumber
! raise err
! if name in BLOCK_TAGS and 'p' in self.stack:
! err = RuntimeError("block element opened while 'p' is still open: "
! + tagrepr(name))
! err.lineno = self.parser.ErrorLineNumber
! raise err
! self.stack.append(name)
!
! def endElement(self, name):
! del self.stack[-1]
!
!
! def tagrepr(name):
! r = `name`
! if r[0] == "u":
! return r[1:]
! else:
! return r
|