ソースを参照

Display error message on failure

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@33859 15284696-431f-4ddb-bdfa-cd5b030d7da7
Glynn Clements 16 年 前
コミット
0528f5b453
1 ファイル変更17 行追加10 行削除
  1. 17 10
      tools/g.html2man/g.html2man.py

+ 17 - 10
tools/g.html2man/g.html2man.py

@@ -4,7 +4,7 @@ import sys
 import types
 import os
 import re
-from HTMLParser import HTMLParser
+from HTMLParser import HTMLParser, HTMLParseError
 from htmlentitydefs import entitydefs
 from StringIO import StringIO
 
@@ -188,7 +188,7 @@ def clean(content):
     return [item for item in content if not is_blank(item)]
 
 class Formatter:
-    def __init__(self, stream = sys.stdout):
+    def __init__(self, filename, stream = sys.stdout):
 	self.stream = stream
 	self.style = dict(preformat = False,
 			  in_ul = False,
@@ -198,6 +198,7 @@ class Formatter:
 			  index = [])
 	self.stack = []
 	self.strip_re = re.compile("\n[ \t]+")
+	self.filename = filename
 
     def warning(self, msg):
 	sys.stderr.write(msg + '\n')
@@ -253,7 +254,7 @@ class Formatter:
 
     def pp_title(self):
 	self.show("\n.TH " +
-		  os.path.basename(sys.argv[1]).replace(".html","") +
+		  os.path.basename(self.filename).replace(".html","") +
 		  " 1 \"\" \"GRASS " +
 		  version +
 		  "\" \"Grass User's Manual\"")
@@ -434,15 +435,24 @@ class MyHTMLParser(HTMLParser):
 
 def main():
     # parse HTML
-    inf = file(sys.argv[1])
+    infile = sys.argv[1]
+    inf = file(infile)
     p = MyHTMLParser()
-    p.feed(inf.read())
+    for n, line in enumerate(inf):
+	try:
+	    p.feed(line)
+	except HTMLParseError, err:
+	    sys.stderr.write('%s:%d:%d: Parse error: %s\n' % (infile, err.lineno, err.offset, err.msg))
+	    sys.exit(1)
+	except Exception, err:
+	    sys.stderr.write('%s:%d:0: Error (%s): %s\n' % (infile, n + 1, err.__dict__, line))
+	    sys.exit(1)
     p.close()
     inf.close()
 
     # generate groff
     sf = StringIO()
-    f = Formatter(sf)
+    f = Formatter(infile, sf)
     f.pp(p.data)
     s = sf.getvalue()
     sf.close()
@@ -458,7 +468,4 @@ def main():
     outf.close()
 
 if __name__ == "__main__":
-    try:
-	main()
-    except:
-	sys.exit(1)
+    main()