]>
Commit | Line | Data |
---|---|---|
4d256d41 CP |
1 | function NickChanEntry() {\r |
2 | this.prefixes = "";\r | |
3 | }\r | |
4 | \r | |
da4b5be7 CP |
5 | var IRCTracker = new Class({\r |
6 | initialize: function() {\r | |
7 | this.channels = {};\r | |
8 | this.nicknames = {};\r | |
9 | },\r | |
10 | isEmpty: function(hash) {\r | |
ecde4837 | 11 | for(var x in hash)\r |
da4b5be7 CP |
12 | return false;\r |
13 | return true;\r | |
14 | },\r | |
15 | getNick: function(nick) {\r | |
16 | return this.nicknames[nick];\r | |
17 | },\r | |
18 | getOrCreateNick: function(nick) {\r | |
19 | var n = this.getNick(nick);\r | |
4d256d41 | 20 | if(!n)\r |
da4b5be7 | 21 | n = this.nicknames[nick] = {};\r |
4d256d41 | 22 | return n;\r |
da4b5be7 CP |
23 | },\r |
24 | getChannel: function(channel) {\r | |
25 | return this.channels[channel];\r | |
26 | },\r | |
27 | getOrCreateChannel: function(channel) {\r | |
28 | var c = this.getChannel(channel);\r | |
4d256d41 | 29 | if(!c)\r |
da4b5be7 | 30 | c = this.channels[channel] = {};\r |
4d256d41 | 31 | return c;\r |
da4b5be7 CP |
32 | },\r |
33 | getOrCreateNickOnChannel: function(nick, channel) {\r | |
34 | var n = this.getNick(nick);\r | |
4d256d41 CP |
35 | \r |
36 | var nc = n[channel];\r | |
37 | if(!nc)\r | |
da4b5be7 | 38 | return this.addNickToChannel(nick, channel);\r |
4d256d41 CP |
39 | \r |
40 | return nc;\r | |
da4b5be7 CP |
41 | },\r |
42 | addNickToChannel: function(nick, channel) {\r | |
4d256d41 CP |
43 | var nc = new NickChanEntry();\r |
44 | \r | |
da4b5be7 | 45 | var n = this.getOrCreateNick(nick);\r |
4d256d41 CP |
46 | n[channel] = nc;\r |
47 | \r | |
da4b5be7 | 48 | var c = this.getOrCreateChannel(channel);\r |
4d256d41 CP |
49 | c[nick] = nc;\r |
50 | \r | |
51 | return nc;\r | |
da4b5be7 CP |
52 | },\r |
53 | removeNick: function(nick) {\r | |
54 | var n = this.getNick(nick);\r | |
4d256d41 CP |
55 | if(!n)\r |
56 | return;\r | |
57 | \r | |
58 | for(var channel in n) {\r | |
da4b5be7 | 59 | var c = this.channels[channel];\r |
4d256d41 CP |
60 | \r |
61 | delete c[nick];\r | |
da4b5be7 CP |
62 | if(this.isEmpty(c))\r |
63 | delete this.channels[channel];\r | |
4d256d41 | 64 | }\r |
da4b5be7 CP |
65 | delete this.nicknames[nick];\r |
66 | },\r | |
67 | removeChannel: function(channel) {\r | |
68 | var c = this.getChannel(channel);\r | |
4d256d41 CP |
69 | if(!c)\r |
70 | return;\r | |
71 | \r | |
72 | for(var nick in c) {\r | |
da4b5be7 | 73 | var n = this.nicknames[nick];\r |
4d256d41 CP |
74 | \r |
75 | delete n[channel];\r | |
da4b5be7 CP |
76 | if(this.isEmpty(n))\r |
77 | delete this.nicknames[nick];\r | |
4d256d41 | 78 | }\r |
da4b5be7 CP |
79 | delete this.channels[channel];\r |
80 | },\r | |
81 | removeNickFromChannel: function(nick, channel) {\r | |
82 | var n = this.getNick(nick);\r | |
83 | var c = this.getChannel(channel);\r | |
4d256d41 CP |
84 | if(!n || !c)\r |
85 | return;\r | |
86 | \r | |
87 | delete n[channel];\r | |
88 | delete c[nick];\r | |
89 | \r | |
da4b5be7 CP |
90 | if(this.isEmpty(n))\r |
91 | delete this.nicknames[nick];\r | |
92 | if(this.isEmpty(c))\r | |
93 | delete this.channels[channel];\r | |
94 | },\r | |
95 | renameNick: function(oldnick, newnick) {\r | |
96 | var n = this.getNick(oldnick);\r | |
4d256d41 CP |
97 | if(!n)\r |
98 | return;\r | |
99 | \r | |
100 | for(var channel in n) {\r | |
da4b5be7 CP |
101 | this.channels[channel][newnick] = this.channels[channel][oldnick];\r |
102 | delete this.channels[channel][oldnick];\r | |
4d256d41 CP |
103 | } \r |
104 | \r | |
da4b5be7 CP |
105 | this.nicknames[newnick] = this.nicknames[oldnick];\r |
106 | delete this.nicknames[oldnick];\r | |
4d256d41 | 107 | }\r |
da4b5be7 | 108 | });\r |