Thomas Lotze wrote:
> Mike Meyer wrote:
> What worries me about the approach of changing state before making a
> next() call instead of doing it at the same time by passing a parameter is
> that the state change is meant to affect only a single call. The picture
> might fit better (IMO) if it didn't look so much like working around the
> fact that the next() call can't take parameters for some technical reason.

I suggest you make the tokenizer class itself into an iterator. Then you can 
define additional next() methods with additional parameters. You could wrap an 
actual generator for the convenience of having multiple yield statements. For 
example (borrowing Peter's PdfTokenizer):

class PdfTokenizer:
    def __init__(self, ...):
        # set up initial state
        self._tokenizer = _getTokens()

    def __iter__(self):
        return self

    def next(self, options=None):
        # set self state according to options, if any
        n = self._tokenizer.next()
        # restore default state
        return n

    def nextIgnoringSpace(self):
        # alterate way of specifying variations
        # ...

    def _getTokens(self):
        while whatever:
            yield token

    def seek(self, newPosition):
        # change state here

Kent
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to