From 8c6ab17e579cf8f4e510ec324fc98b010ff01cb0 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 2 Sep 2018 19:54:45 +0100 Subject: give an Exports object (actually, ExportsContex object) to each module, to facilitate things like !set and !channelset without using the events system --- Exports.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Exports.py (limited to 'Exports.py') 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] -- cgit v1.3.1-10-gc9f91