2022-09-05 23:01:39 +00:00
|
|
|
# Python imports
|
2022-10-01 04:35:03 +00:00
|
|
|
from collections import defaultdict
|
2022-09-05 23:01:39 +00:00
|
|
|
|
|
|
|
# Lib imports
|
|
|
|
|
|
|
|
# Application imports
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EventSystem:
|
2022-10-01 04:35:03 +00:00
|
|
|
""" Create event system. """
|
2022-09-05 23:01:39 +00:00
|
|
|
|
|
|
|
def __init__(self):
|
2022-10-01 04:35:03 +00:00
|
|
|
self.subscribers = defaultdict(list)
|
|
|
|
|
|
|
|
|
|
|
|
def subscribe(self, event_type, fn):
|
|
|
|
self.subscribers[event_type].append(fn)
|
|
|
|
|
|
|
|
def emit(self, event_type, data = None):
|
|
|
|
if event_type in self.subscribers:
|
|
|
|
for fn in self.subscribers[event_type]:
|
|
|
|
if data:
|
|
|
|
if hasattr(data, '__iter__') and not type(data) is str:
|
|
|
|
fn(*data)
|
|
|
|
else:
|
|
|
|
fn(data)
|
|
|
|
else:
|
|
|
|
fn()
|