Peach :: Generators :: dictionary :: GeneratorList :: Class GeneratorList
[hide private]

Class GeneratorList

source code


Iterates through a specified list of generators. When the end of the list is reached a generator.GeneratorCompleted exceoption is raised.

NOTE: Generators are incremented by this object so DON'T SET A GROUP ON THEM!

NOTE: We only increment to next generator in list when the GeneratorCompleted exception has been thrown from current generator. This allows one todo kewl things like have 2 static generators, then a dictionary, then a repeater.

Example:

>>> gen = GeneratorList(None, [
...     Static('1'),
...     Static('2'),
...     Static('3')
...     ])
>>> print gen.getValue()
1
>>> gen.next()
>>> print gen.getValue()
2
>>> gen.next()
>>> print gen.getValue()
3
>>> try:
...     gen.next()      # Will raise GeneraterCompleted exception
... except:
...     pass
>>> print gen.getValue() # notice we get last value again.
3

Example:

>>> gen = GeneratorList(None, [
...     Repeater(None, Static('Peach'), 1, 2),
...     Static('Hello World')
...     ])
>>> print gen.getValue()
Peach
>>> gen.next()
>>> print gen.getValue()
PeachPeach
>>> gen.next()
>>> print gen.getValue()
Hello World
>>> try:
...     gen.next()      # Will raise GeneraterCompleted exception
... except:
...     pass
>>> print gen.getValue() # notice we get last value again.
Hello World

Bad Example, group set on Generator in list:

>>> group = Group()
>>> gen = GeneratorList(group, [
...     Repeater(group, Static('Peach'), 1, 2),
...     Static('Hello World')
...     ])
>>> print gen.getValue()
Peach
>>> group.next()
>>> print gen.getValue()
Hello World
>>> try:
...     gen.next()      # Will raise GeneraterCompleted exception
... except:
...     pass
>>> print gen.getValue() # notice we get last value again.
Hello World
Instance Methods [hide private]
 
__init__(self, group, list, name=None)
Base constructor, please call me!
source code
 
next(self)
Next value.
source code
 
reset(self)
Called to reset the generator to its initial state.
source code
string
getRawValue(self)
Return raw value w/o passing through transformer if set.
source code
list
getList(self)
Get list of Generators.
source code
 
setList(self, list)
Set list of Generators.
source code

Inherited from generator.Generator: __iter__, getGroup, getName, getTransformer, getValue, identity, setGroup, setName, setTransformer

Static Methods [hide private]
 
unittest() source code
Method Details [hide private]

__init__(self, group, list, name=None)
(Constructor)

source code 

Base constructor, please call me!

Parameters:
  • group (Group) - Group this Generator belongs to
  • list (list) - List of Generators to iterate through
  • name (string)
Overrides: generator.Generator.__init__

next(self)

source code 

Next value. OVERRIDE

From Python docs on next():

The intention of the protocol is that once an iterator's next() method raises StopIteration, it will continue to do so on subsequent calls. Implementations that do not obey this property are deemed broken. (This constraint was added in Python 2.3; in Python 2.2, various iterators are broken according to this rule.)

For Generators, please use the GeneratorCompleted exception instead of StopIteration (its a subclass).

Overrides: generator.Generator.next
(inherited documentation)

reset(self)

source code 

Called to reset the generator to its initial state. OVERRIDE

Overrides: generator.Generator.reset
(inherited documentation)

getRawValue(self)

source code 

Return raw value w/o passing through transformer if set. OVERRIDE

Returns: string
Data before transformations
Overrides: generator.Generator.getRawValue
(inherited documentation)

getList(self)

source code 

Get list of Generators.

Returns: list
list of Generators

setList(self, list)

source code 

Set list of Generators.

Parameters:
  • list (list) - List of Generators