pycollate: Options to set backend, locale, and encoding.
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Mon, 15 Feb 2010 05:40:07 +0000 (21:40 -0800)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Mon, 15 Feb 2010 05:40:07 +0000 (21:40 -0800)
pycollate [new file with mode: 0755]
pysort [deleted file]

diff --git a/pycollate b/pycollate
new file mode 100755 (executable)
index 0000000..ec7f9f9
--- /dev/null
+++ b/pycollate
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+
+import os
+import sys
+import locale
+
+from optparse import OptionParser
+
+import collate
+
+def main(argv):
+    lines = []
+    encoding = locale.getpreferredencoding()
+    try:
+        locale.setlocale(locale.LC_ALL, '')
+    except locale.Error:
+        pass
+
+    parser = OptionParser()
+    parser.add_option("-b", "--backend", dest="backend",
+                      help="use backend BACKEND", metavar="BACKEND",
+                      default="default")
+    parser.add_option("-l", "--locale", dest="locale",
+                      help="use locale LOCALE", metavar="LOCALE",
+                      default=locale.getlocale()[0])
+    parser.add_option("-e", "--encoding", dest="encoding",
+                      help="use encoding ENCODING", metavar="ENCODING",
+                      default=encoding)
+    parser.add_option("-d", "--diagnostics", action="store_true",
+                      dest="diagnostics", help="print diagnostic information")
+
+    options, args = parser.parse_args()
+
+    if options.backend or options.locale or options.encoding:
+        backend = getattr(collate, options.backend)
+        collate.set_default(backend, options.locale, options.encoding)
+
+    if options.diagnostics:
+        print >>sys.stderr, "Backend: " + collate.default.__name__
+        print >>sys.stderr, "Locale: " + collate.collator.locale
+        print >>sys.stderr, "Encoding: " + collate.collator.encoding
+
+        if not args:
+            raise SystemExit
+
+    if not args:
+       args.append("-")
+    for filename in args:
+       if filename == "-":
+           fileobj = sys.stdin
+       else:
+           fileobj = open(filename, "rU")
+       for line in fileobj:
+           line = line.strip()
+           line = line.decode(encoding, "replace")
+           lines.append(line)
+    lines.sort(key=collate.key)
+
+    for line in lines:
+       print line.encode(encoding, "replace")
+
+if __name__ == "__main__":
+    main(sys.argv[1:])
diff --git a/pysort b/pysort
deleted file mode 100755 (executable)
index 2e9e2ca..0000000
--- a/pysort
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-import locale
-
-import collate
-
-def main(argv):
-    lines = []
-    encoding = locale.getpreferredencoding()
-
-    print >>sys.stderr, "Backend: " + collate.default.__name__
-    print >>sys.stderr, "Locale: " + collate.collator.locale
-
-    if not argv:
-       argv.append("-")
-    for filename in argv:
-       if filename == "-":
-           fileobj = sys.stdin
-       else:
-           fileobj = open(filename, "rU")
-       for line in fileobj:
-           line = line.strip()
-           line = line.decode(encoding, "replace")
-           lines.append(line)
-    lines.sort(key=collate.key)
-
-    for line in lines:
-       print line.encode(encoding, "replace")
-
-if __name__ == "__main__":
-    main(sys.argv[1:])
-