From d6bc5867dc1360627b404cce937e8d41981ab245 Mon Sep 17 00:00:00 2001 From: minerobber Date: Thu, 31 Jan 2019 02:39:38 +0000 Subject: [PATCH] Add plugin data --- plugin.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/plugin.py b/plugin.py index c7c8d72..a79ef67 100644 --- a/plugin.py +++ b/plugin.py @@ -1,3 +1,4 @@ +import json, traceback cmds = {} help = {} listeners = {} @@ -22,6 +23,33 @@ class CommandGroup: else: return self.subcmds[self.default](bot,channel,nick,subcmd,*args) +class Data: + """A class for plugin data.""" + def __init__(self,value): + self.value = value + def serialize(self): + return self.value + def deserialize(self,value): + self.value = value + def save(self,filename): + with open(filename,"w") as f: + f.write(self.serialize()) + def load(self,filename): + try: + with open(filename) as f: + self.deserialize(f.read()) + except: + print("Error loading data from {!r}:".format(filename)) + traceback.print_exc() + pass # You should've initialized this with a sane default, so just keep the default on error + +class JSONData(Data): + """Data, but can be serialized to JSON (and should be).""" + def serialize(self): + return json.dumps(self.value) + def deserialize(self,value): + self.value = json.loads(value) + def clear(): cmds.clear() help.clear()