Package gozerbot :: Module persiststate
[hide private]
[frames] | no frames]

Source Code for Module gozerbot.persiststate

 1  # gozerbot/persiststate.py 
 2  # 
 3  # 
 4   
 5  """ persistent state classes """ 
 6   
 7  __copyright__ = 'this file is in the public domain' 
 8   
 9  from gozerbot.generic import calledfrom 
10  from gozerbot.persist import Persist 
11  from gozerbot.datadir import datadir 
12  import types, os, sys 
13   
14 -class PersistState(Persist):
15 16 """ base persitent state class """ 17
18 - def __init__(self, filename):
19 Persist.__init__(self, filename, {}) 20 self.types = dict((i, type(j)) for i, j in self.data.iteritems())
21
22 - def __getitem__(self, key):
23 """ get state item """ 24 return self.data[key]
25
26 - def __setitem__(self, key, value):
27 """ set state item """ 28 self.data[key] = value
29
30 - def define(self, key, value):
31 """ define a state item """ 32 if not self.data.has_key(key) or type(value) != self.types[key]: 33 if type(value) == types.StringType: 34 value = unicode(value) 35 if type(value) == types.IntType: 36 value = long(value) 37 self.data[key] = value
38
39 -class PlugState(PersistState):
40 41 """ state for plugins """ 42
43 - def __init__(self):
44 PersistState.__init__(self, datadir + os.sep + calledfrom(sys._getframe()))
45
46 -class ObjectState(PersistState):
47 48 """ state for usage in constructors """ 49
50 - def __init__(self):
51 PersistState.__init__(self, datadir + os.sep + calledfrom(sys._getframe(1))+'.state')
52
53 -class UserState(PersistState):
54 55 """ state for users """ 56
57 - def __init__(self, username):
58 PersistState.__init__(self, datadir + os.sep + 'userstates' + os.sep + \ 59 username)
60