35 lines
892 B
Python
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
|