Added plugins.bind_variable().
authorCMDR furrycat <elite@furrycat.net>
Sat, 29 Oct 2016 09:36:32 +0000 (10:36 +0100)
committerCMDR furrycat <elite@furrycat.net>
Sat, 29 Oct 2016 09:36:32 +0000 (10:36 +0100)
plugins.py

index 9694842..36e63a7 100644 (file)
@@ -44,11 +44,21 @@ class Plugins(object):
     if self.has_method(name, 'description'):
       return self.call_method(name, 'description')
 
+  def get_module(self, name):
+    if name not in self.loaded:
+      return None
+    return self.loaded[name]['module']
+
   def get_plugin(self, name):
     if name not in self.loaded:
       return None
     return self.loaded[name]['plugin']
 
+  def bind_variable(self, name, key, value):
+    if name not in self.loaded:
+      return None
+    return setattr(self.get_module(name), key, value)
+
   def has_method(self, name, method):
     if name not in self.loaded:
       return None
@@ -74,12 +84,8 @@ class Plugins(object):
       logging.getLogger(name).setLevel(level)
 
   def set_client(self, client):
-    for name, data in self.loaded.items():
-      data['module'].client = client
-
-  def all(self):
     for name in self.plugins():
-      yield self.get_plugin(name)
+      self.bind_variable(name, 'client', client)
 
   def on_ready(self):
     for name in self.plugins():