1
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
12
13 """ output cache """
14
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
25 if not self.data.has_key(nick):
26 self.data[nick] = Limlist(self.nr)
27
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