diff options
| author | Jim Fulton <jim@zope.com> | 2015-10-17 11:13:49 -0400 |
|---|---|---|
| committer | Jim Fulton <jim@zope.com> | 2015-10-17 11:13:49 -0400 |
| commit | d1c63c2ae399d3d2be8b6d2f8536129ac5d5d0d8 (patch) | |
| tree | 0cea8d607772e913957603c041d390b9310d6a73 /docs | |
| parent | cfc5a87890fb5886976c6ce640a0f4840a91b9c6 (diff) | |
| download | zope-event-classhandler.tar.gz | |
Added a simple class-based handler implementation.classhandler
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/classhandler.rst | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/docs/classhandler.rst b/docs/classhandler.rst new file mode 100644 index 0000000..5385b68 --- /dev/null +++ b/docs/classhandler.rst @@ -0,0 +1,42 @@ +Class-based event handlers +========================== + +A light-weight event-handler framework based on event classes is +provided by the ``zope.event.classhandler`` module. + +Handlers are registered for event classes: + + >>> import zope.event.classhandler + + >>> class MyEvent(object): + ... def __repr__(self): + ... return self.class.__name__ + + >>> def handler1(event): + ... print("handler1 %r" % event) + + >>> zope.event.classhandler.handler(MyEvent, handler1) + +Descriptor syntax: + + >>> @zope.event.classhandler.handler(MyEvent) + ... def handler2(event): + ... print("handler2 %r" % event) + + >>> class MySubEvent(MyEvent): + ... pass + + >>> @zope.event.classhandler.handler(MySubEvent) + ... def handler3(event): + ... print("handler3 %r" % event) + + +Subscribers are called in class method-resolution order, so only +new-style event classes are supported, and then by order of registry. + + >>> import zope.event + >>> zope.event.notify(MySubEvent()) + handler3 MySubEvent + handler1 MySubEvent + handler2 MySubEvent + |
