diff options
| author | 2018-07-08 11:18:55 +0100 | |
|---|---|---|
| committer | 2018-07-08 11:18:55 +0100 | |
| commit | d12b61620d6459bf6340d43ac7a999ef8f2f8418 (patch) | |
| tree | c3d80c51a10cdb7833013ac487eb8e67028e0aad /EventManager.py | |
| parent | IRCChannel.modes isn't a list, "sever" -> "server" (diff) | |
| signature | ||
Implemented delimited "event chains" and changed pong.py to use it
Diffstat (limited to 'EventManager.py')
| -rw-r--r-- | EventManager.py | 15 |
1 files changed, 14 insertions, 1 deletions
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: |
