CVS: ht2html htwf.py,1.3,1.4
"Fred L. Drake" <[email protected]> Wed, 30 Jul 2003 14:05:17 -0700
| Newsgroups | gmane.comp.web.ht2html.devel |
|---|---|
| Message-ID | <[email protected]> |
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
-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01