aboutsummaryrefslogtreecommitdiff
path: root/Exports.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-09-02 19:54:45 +0100
committerGravatar jesopo2018-09-02 19:54:45 +0100
commit8c6ab17e579cf8f4e510ec324fc98b010ff01cb0 (patch)
treec0437f76bbe9dea31f5f4599450ed5b492eedcd6 /Exports.py
parentIRCLogging -> Logging (diff)
give an Exports object (actually, ExportsContex object) to each module, to
facilitate things like !set and !channelset without using the events system
Diffstat (limited to 'Exports.py')
-rw-r--r--Exports.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/Exports.py b/Exports.py
new file mode 100644
index 00000000..8baca50d
--- /dev/null
+++ b/Exports.py
@@ -0,0 +1,44 @@
+
+
+class ExportsContext(object):
+ def __init__(self, parent, context):
+ self._parent = parent
+ self.context = context
+
+ def add(self, setting, value):
+ self._parent._context_add(self.context, setting, value)
+ def get_all(self, setting):
+ return self._parent.get_all(setting)
+
+class Exports(object):
+ def __init__(self):
+ self._exports = {}
+ self._context_exports = {}
+
+ def new_context(self, context):
+ return ExportsContext(self, context)
+
+ def add(self, setting, value):
+ self._add(None, setting, value)
+ def _context_add(self, context, setting, value):
+ self._add(context, setting, value)
+ def _add(self, context, setting, value):
+ if context == None:
+ if not setting in self_exports:
+ self._exports[setting] = []
+ self._exports[setting].append(value)
+ else:
+ if not context in self._context_exports:
+ self._context_exports[context] = {}
+ if not setting in self._context_exports[context]:
+ self._context_exports[context][setting] = []
+ self._context_exports[context][setting].append(value)
+
+ def get_all(self, setting):
+ return self._exports.get(setting, []) + sum([
+ exports.get(setting, []) for exports in
+ self._context_exports.values()], [])
+
+ def purge_context(self, context):
+ if context in self._context_exports:
+ del self._context_exports[context]