From 55e8d3e84b06336ab6c2d8b18958b5e3e6efa284 Mon Sep 17 00:00:00 2001 From: Joe Wreschnig Date: Sun, 14 Feb 2010 21:40:07 -0800 Subject: [PATCH] pycollate: Options to set backend, locale, and encoding. --- pycollate | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ pysort | 34 ------------------------------ 2 files changed, 63 insertions(+), 34 deletions(-) create mode 100755 pycollate delete mode 100755 pysort diff --git a/pycollate b/pycollate new file mode 100755 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 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:]) - -- 2.20.1