# HG changeset patch # User Paul Boddie # Date 1317424453 -7200 # Node ID a78ee57c5c7d89d8b109f0f370f6cda9b27c1dba # Parent dc3d2ee38bae3135c0f26db8e00ec299f94f6c82 Split the TextFile class into reader and accessor classes. diff -r dc3d2ee38bae -r a78ee57c5c7d simplex.py --- a/simplex.py Sat Oct 01 00:56:16 2011 +0200 +++ b/simplex.py Sat Oct 01 01:14:13 2011 +0200 @@ -34,10 +34,8 @@ "A wrapper around text files." - def __init__(self, f, keys=None, delimiter=None): + def __init__(self, f): self.f = f - self.keys = keys or [0] - self.delimiter = delimiter def seek(self, pos): self.f.seek(pos) @@ -45,6 +43,14 @@ def get_records(self): return self.f.xreadlines() +class DelimitedRecord: + + "An accessor using a delimiter to split a record." + + def __init__(self, keys=None, delimiter=None): + self.keys = keys or [0] + self.delimiter = delimiter + def get_key(self, record): values = record.split(self.delimiter) return [values[key] for key in self.keys] diff -r dc3d2ee38bae -r a78ee57c5c7d test_indexed.py --- a/test_indexed.py Sat Oct 01 00:56:16 2011 +0200 +++ b/test_indexed.py Sat Oct 01 01:14:13 2011 +0200 @@ -13,17 +13,18 @@ sys.exit(1) f = open(filename) -reader = TextFile(f, keys) +reader = TextFile(f) +accessor = DelimitedRecord(keys) try: t = time.time() - l = make_index(reader, reader, int(interval)) + l = make_index(reader, accessor, int(interval)) print "Indexed in %s seconds." % (time.time() - t) # Now use the index. for term in terms: t = time.time() - line = find_with_index(reader, reader, l, term) + line = find_with_index(reader, accessor, l, term) if line: print "Found (at %s seconds)...\n%s" % (time.time() - t, line) diff -r dc3d2ee38bae -r a78ee57c5c7d test_scan.py --- a/test_scan.py Sat Oct 01 00:56:16 2011 +0200 +++ b/test_scan.py Sat Oct 01 01:14:13 2011 +0200 @@ -13,13 +13,14 @@ sys.exit(1) f = open(filename) -reader = TextFile(f, keys) +reader = TextFile(f) +accessor = DelimitedRecord(keys) try: for term in terms: reader.seek(0) t = time.time() - line = find_in_file(reader, reader, term) + line = find_in_file(reader, accessor, term) if line: print "Found (at %s seconds)...\n%s" % (time.time() - t, line) finally: