summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/iso639tab.py38
1 files changed, 22 insertions, 16 deletions
diff --git a/scripts/iso639tab.py b/scripts/iso639tab.py
index b2739c9..23f095e 100755
--- a/scripts/iso639tab.py
+++ b/scripts/iso639tab.py
@@ -1,18 +1,19 @@
-#!/usr/bin/python
+#!/usr/bin/env python
#
# Read iso-codes iso_639.xml data file and output a .tab file
#
# Copyright (C) 2005 Alastair McKinstry <mckinstry@debian.org>
# Released under the GPL.
-# $Id: iso639tab.py,v 1.1 2005/03/02 07:24:51 mckinstry Exp $
+# $Id: iso639tab.py 929 2007-07-23 10:28:20Z toddy-guest $
-from xml.sax import saxutils, make_parser, saxlib, saxexts, ContentHandler
-from xml.sax.handler import feature_namespaces
+from xml.sax import make_parser, SAXException, SAXParseException
+from xml.sax.handler import feature_namespaces, ContentHandler
import sys, os, getopt, urllib2
-class printLines(saxutils.DefaultHandler):
- def __init__(self, ofile):
- self.ofile = ofile
+lines = []
+class printLines(ContentHandler):
+ def __init__(self):
+ pass
def startElement(self, name, attrs):
if name != 'iso_639_entry':
@@ -34,8 +35,7 @@ class printLines(saxutils.DefaultHandler):
short_code=short_code.encode('UTF-8')
if type(name) == unicode:
name = name.encode('UTF-8')
- self.ofile.write (t_code + '\t' + b_code + '\t' + short_code + '\t' + name + '\n')
-
+ lines.append(t_code + '\t' + b_code + '\t' + short_code + '\t' + name + '\n')
##
## MAIN
@@ -68,14 +68,20 @@ ofile.write("""
##
""")
p = make_parser()
-p.setErrorHandler(saxutils.ErrorPrinter())
try:
- dh = printLines(ofile)
+ dh = printLines()
p.setContentHandler(dh)
p.parse(sys.argv[1])
-except IOError,e:
- print in_sysID+": "+str(e)
-except saxlib.SAXException,e:
- print str(e)
-
+except SAXParseException, e:
+ sys.stderr.write('%s:%s:%s: %s\n' % (e.getSystemId(),
+ e.getLineNumber(),
+ e.getColumnNumber(),
+ e.getMessage()))
+ sys.exit(1)
+except Exception, e:
+ sys.stderr.write('<unknown>: %s\n' % str(e))
+ sys.exit(1)
+lines.sort()
+for l in lines:
+ ofile.write(l)
ofile.close()