"Jordan Rastrick" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> def combineIntoRecord(): # This is an acceptor function
> optionalline = None # We may not get given a value for this line
> accept firstline
> accept secondline
> if condition(secondline):
> accept optionalline
> accept lastline
> r = createRecord(firstline, secondline, lastline, optionalline)
> return r
> recordlist = []
> for line in lines:
> recordlist.append(combineIntoRecord(line))
How about doing it this way?
class Acceptor:
def __init__(self, gen):
self.gen = gen
def next(self):
firstline = self.gen.next()
secondline = self.gen.next()
if condition(secondline):
optionalline = self.gen.next()
accept lastline
r = createRecord(firstline, secondline, lastline, optinalline)
return r
This is just a generator done longhand. If anything in Acceptor.next raises
StopIteration, so will Acceptor.next itself. Which means that you can now
write this:
for r in Acceptor(line):
recordlist.append(r)
or, for that matter,
recordlist = list(Acceptor(line))
Incidentally, I did not try to fix the bug in your code that if
condition(secondline) is false, optionalline never gets set so the program
will crash :-)
--
http://mail.python.org/mailman/listinfo/python-list