minerbot2/listdata.py

35 lines
892 B
Python

import plugin, functools
def wrapper(data,func):
@functools.wraps(func)
def __wrapper(*args,**kwargs):
data.load(data.filename)
ret = func(*args,**kwargs)
data.save(data.filename)
return ret
return __wrapper
class ListData(plugin.JSONData):
def __init__(self,filename,*args):
plugin.JSONData.__init__(self,list(args))
self.filename = filename
self.load(self.filename)
def __getitem__(self,k):
self.load(self.filename)
return self.value[k]
def __setitem__(self,k,v):
self.value[k]=v
self.save(self.filename)
def __getattr__(self,attr):
if attr in self.__dict__: return self.__dict__[attr]
return wrapper(self,getattr(self.value,attr))
def __len__(self):
self.load(self.filename)
return len(self.value)
def __iter__(self):
self.load(self.filename)
return iter(self.value)
def __contains__(self):
self.load(self.filename)
return k in self.value