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

Source Code for Module gozerbot.less

 1  # gozerbot/less.py 
 2  # 
 3  # 
 4   
 5  """ maintain bot output cache """ 
 6   
 7  __copyright__ = 'this file is in the public domain' 
 8   
 9  from gozerbot.limlist import Limlist 
10   
11 -class Less(object):
12 13 """ output cache """ 14
15 - def __init__(self, nr):
16 self.data = {} 17 self.index = {} 18 self.nr = nr
19
20 - def add(self, nick, listoftxt):
21 """ add listoftxt to nick's output .. set index for used by more 22 commands """ 23 nick = nick.lower() 24 # see if we already have cached output .. if not create limited list 25 if not self.data.has_key(nick): 26 self.data[nick] = Limlist(self.nr) 27 # add data 28 self.data[nick].insert(0, listoftxt) 29 self.index[nick] = 1
30
31 - def get(self, nick, index1, index2):
32 """ return less entry """ 33 nick = nick.lower() 34 try: 35 txt = self.data[nick][index1][index2] 36 except (KeyError, IndexError): 37 txt = None 38 return txt
39
40 - def more(self, nick, index1):
41 """ return more entry pointed to by index .. increase index """ 42 nick = nick.lower() 43 try: 44 nr = self.index[nick] 45 except KeyError: 46 nr = 1 47 try: 48 txt = self.data[nick][index1][nr] 49 size = len(self.data[nick][index1])-nr 50 self.index[nick] = nr+1 51 except (KeyError, IndexError): 52 txt = None 53 size = 0 54 return (txt, size-1)
55
56 - def size(self, nick):
57 """ return sizes of cached output """ 58 nick = nick.lower() 59 sizes = [] 60 if not self.data.has_key(nick): 61 return sizes 62 for i in self.data[nick]: 63 sizes.append(len(i)) 64 return sizes
65