1.1 --- a/simplex/readers.py Sat Oct 01 16:01:22 2011 +0200
1.2 +++ b/simplex/readers.py Sat Oct 01 16:40:29 2011 +0200
1.3 @@ -22,14 +22,34 @@
1.4
1.5 "A wrapper around text files."
1.6
1.7 - def __init__(self, f):
1.8 + def __init__(self, f, accessor):
1.9 self.f = f
1.10 + self.accessor = accessor
1.11
1.12 def seek(self, pos):
1.13 self.f.seek(pos)
1.14
1.15 def get_records(self):
1.16 - return self.f.xreadlines()
1.17 + return FileIterator(self.f, self.accessor)
1.18 +
1.19 +class FileIterator:
1.20 +
1.21 + "An iterator over records employing record accessors."
1.22 +
1.23 + def __init__(self, resource, accessor):
1.24 + self.resource = resource
1.25 + self.accessor = accessor
1.26 + self.iterator = None
1.27 +
1.28 + def __iter__(self):
1.29 + self.iterator = iter(self.resource.xreadlines())
1.30 + return self
1.31 +
1.32 + def next(self):
1.33 + if self.iterator is None:
1.34 + iter(self)
1.35 + record = self.iterator.next()
1.36 + return self.accessor.get_key(record), record
1.37
1.38 class DelimitedRecord:
1.39
1.40 @@ -47,6 +67,9 @@
1.41
1.42 self.keys = keys or [0]
1.43 self.delimiter = delimiter
1.44 +
1.45 + # Define a conversion method.
1.46 +
1.47 self.convert = numeric and self.convert_numeric or (lambda x: x)
1.48
1.49 def convert_numeric(self, term):