Source code for alphatwirl.loop.ReaderComposite
# Tai Sakuma <tai.sakuma@gmail.com>
##__________________________________________________________________||
[docs]class ReaderComposite(object):
"""A composite of event readers"
This class is a composite in the composite pattern.
Examples of event readers are instances of `Summarizer` and this
class.
When `event()` is called, it calls `event()` of each reader in the
order in which the readers are added. If a reader returns `False`,
it won't call the remaining readers.
"""
def __init__(self):
self.readers = []
def __repr__(self):
return '{}({!r})'.format(
self.__class__.__name__,
self.readers
)
[docs] def add(self, reader):
self.readers.append(reader)
[docs] def begin(self, event):
for reader in self.readers:
if not hasattr(reader, 'begin'): continue
reader.begin(event)
[docs] def event(self, event):
for reader in self.readers:
if reader.event(event) is False: break
[docs] def end(self):
for reader in self.readers:
if not hasattr(reader, 'end'): continue
reader.end()
##__________________________________________________________________||