summaryrefslogtreecommitdiff
path: root/docs/classhandler.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/classhandler.rst')
-rw-r--r--docs/classhandler.rst42
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
+