From d12b61620d6459bf6340d43ac7a999ef8f2f8418 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 8 Jul 2018 11:18:55 +0100 Subject: Implemented delimited "event chains" and changed pong.py to use it --- EventManager.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'EventManager.py') diff --git a/EventManager.py b/EventManager.py index c1b58d4a..b93f170b 100644 --- a/EventManager.py +++ b/EventManager.py @@ -51,6 +51,7 @@ class EventHook(object): self._child_notify = None self._call_notify = None self._stored_events = [] + def hook(self, function, priority=EventCallback.PRIORITY_LOW, replay=False, **kwargs): callback = EventCallback(function, self.bot, priority, **kwargs) @@ -63,15 +64,26 @@ class EventHook(object): for event in self._stored_events: callback.call(event) self._stored_events = None + def _unhook(self, hook): self._hooks.remove(hook) - def on(self, subevent, *extra_subevents): + + def on(self, subevent, *extra_subevents, delimiter="."): + if delimiter in subevent: + event_chain = subevent.split(delimiter) + event_obj = self + for event_name in event_chain: + event_obj = event_obj.get_child(event_name) + return event_obj + if extra_subevents: multiple_event_hook = MultipleEventHook() for extra_subevent in (subevent,)+extra_subevents: multiple_event_hook._add(self.get_child(extra_subevent)) return multiple_event_hook + return self.get_child(subevent) + def call(self, max=None, **kwargs): event = Event(self.bot, self.name, **kwargs) if self._call_notify: @@ -96,6 +108,7 @@ class EventHook(object): # data=traceback.format_exc()) called += 1 return returns + def get_child(self, child_name): child_name_lower = child_name.lower() if not child_name_lower in self._children: -- cgit v1.3.1-10-gc9f91