aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jesopo2019-05-10 16:11:22 +0100
committerGravatar jesopo2019-05-10 16:11:22 +0100
commit091818fa32a67e973bdcda65a3edfe89a5a8c012 (patch)
tree90bb7f9ca7a6e6a0fd676b9c4333c6750289e948 /src
parentignore users ignored from !factoid for automatic factoid parsing (diff)
signature
Hold context in EventCallback objects, add name<->context translation in
ModuleManager
Diffstat (limited to 'src')
-rw-r--r--src/EventManager.py5
-rw-r--r--src/ModuleManager.py12
2 files changed, 15 insertions, 2 deletions
diff --git a/src/EventManager.py b/src/EventManager.py
index 12ec524c..eae8a121 100644
--- a/src/EventManager.py
+++ b/src/EventManager.py
@@ -29,11 +29,12 @@ class Event(object):
class EventCallback(object):
def __init__(self, function: CALLBACK_TYPE, priority: int, kwargs: dict,
- one_shot: bool=False):
+ context: typing.Optional[str], one_shot: bool=False):
self.function = function
self.priority = priority
self.kwargs = kwargs
self.docstring = utils.parse.docstring(function.__doc__ or "")
+ self.context = context
self._one_shot = one_shot
def call(self, event: Event) -> typing.Any:
@@ -83,7 +84,7 @@ class EventHook(object):
return self._hook(function, context, priority, replay, kwargs)
def _hook(self, function: CALLBACK_TYPE, context: typing.Optional[str],
priority: int, replay: bool, kwargs: dict) -> EventCallback:
- callback = EventCallback(function, priority, kwargs)
+ callback = EventCallback(function, priority, kwargs, context)
if context == None:
self._hooks.append(callback)
diff --git a/src/ModuleManager.py b/src/ModuleManager.py
index 6b04f47c..f764b445 100644
--- a/src/ModuleManager.py
+++ b/src/ModuleManager.py
@@ -91,6 +91,18 @@ class ModuleManager(object):
def _import_name(self, name: str) -> str:
return "bitbot_%s" % name
+ def from_context(self, context: str) -> typing.Optional[LoadedModule]:
+ for module in self.modules.values():
+ if module.context == context:
+ return module
+ return None
+ def from_name(self, name: str) -> typing.Optional[LoadedModule]:
+ name_lower = name.lower()
+ for module in self.modules.values():
+ if module.name.lower() == name_lower:
+ return module
+ return None
+
def _get_magic(self, obj: typing.Any, magic: str, default: typing.Any
) -> typing.Any:
return getattr(obj, magic) if hasattr(obj, magic) else default