# HG changeset patch # User Paul Boddie # Date 1317483988 -7200 # Node ID 1361f999ab07c56e7fc8dd85b0e71b7735d4be9b # Parent 6e1d369de4b38dc9934e2a3548d4fdc6b4fdf6cf Made the FileIterator work with records instead of resources. Added a method to show the appropriate Unix sort command for delimited data. diff -r 6e1d369de4b3 -r 1361f999ab07 simplex/readers.py --- a/simplex/readers.py Sat Oct 01 16:40:29 2011 +0200 +++ b/simplex/readers.py Sat Oct 01 17:46:28 2011 +0200 @@ -30,19 +30,19 @@ self.f.seek(pos) def get_records(self): - return FileIterator(self.f, self.accessor) + return FileIterator(self.f.xreadlines(), self.accessor) class FileIterator: "An iterator over records employing record accessors." - def __init__(self, resource, accessor): - self.resource = resource + def __init__(self, records, accessor): + self.records = records self.accessor = accessor self.iterator = None def __iter__(self): - self.iterator = iter(self.resource.xreadlines()) + self.iterator = iter(self.records) return self def next(self): @@ -67,6 +67,7 @@ self.keys = keys or [0] self.delimiter = delimiter + self.numeric = numeric # Define a conversion method. @@ -79,4 +80,11 @@ values = record.split(self.delimiter) return self.convert([values[key] for key in self.keys]) + def get_sort_command(self): + return "sort%s%s%s" % ( + self.delimiter and (" -t $'%s'" % repr(self.delimiter)[1:-1]) or "", + self.numeric and " -n" or "", + "".join([(" -k %d,%d" % (key + 1, key + 1)) for key in self.keys]) + ) + # vim: tabstop=4 expandtab shiftwidth=4