]>
Commit | Line | Data |
---|---|---|
c3efd9cc CP |
1 | var ThemeControlCodeMap = {\r |
2 | "C": "\x03",\r | |
3 | "B": "\x02",\r | |
4 | "U": "\x1F",\r | |
5 | "O": "\x0F",\r | |
6 | "$": "$"\r | |
7 | };\r | |
8 | \r | |
da4b5be7 CP |
9 | var DefaultTheme = {\r |
10 | "PREFIX": ["$C4==$O "],\r | |
11 | "SIGNON": ["Signed on!", true],\r | |
12 | "CONNECT": ["Connected to server.", true],\r | |
13 | "RAW": ["$m", true],\r | |
14 | "DISCONNECT": ["Disconnected from server.", true],\r | |
15 | "ERROR": ["ERROR: $m", true],\r | |
16 | "SERVERNOTICE": ["$m", true],\r | |
17 | "JOIN": ["$n [$h] has joined $c", true],\r | |
18 | "PART": ["$n [$h] has left $c [$m]", true],\r | |
19 | "KICK": ["$v was kicked from $c by $n [$m]", true],\r | |
20 | "MODE": ["mode/$c [$m] by $n", true],\r | |
21 | "QUIT": ["$n [$h] has quit [$m]", true],\r | |
22 | "NICK": ["$n has changed nick to $w", true],\r | |
23 | "TOPIC": ["$n changed the topic of $c to: $m", true],\r | |
24 | "UMODE": ["MODE $n $m", true],\r | |
25 | "INVITE": ["$n invites you to join $c", true],\r | |
26 | "CHANMSG": ["<$n> $m"],\r | |
27 | "PRIVMSG": ["<$n> $m"],\r | |
28 | "CHANNOTICE": ["-$n:$c- $m"],\r | |
29 | "PRIVNOTICE": ["-$n- $m"],\r | |
30 | "OURCHANMSG": ["<$n> $m"],\r | |
31 | "OURPRIVMSG": ["<$n> $m"],\r | |
32 | "OURTARGETEDMSG": ["*$t* $m"],\r | |
33 | "OURTARGETEDNOTICE": ["[notice($t)] $m"],\r | |
34 | "OURCHANNOTICE": ["-$n:$t- $m"],\r | |
35 | "OURPRIVNOTICE": ["-$n- $m"],\r | |
36 | "OURCHANACTION": [" * $n $m"],\r | |
37 | "OURPRIVACTION": [" * $n $m"],\r | |
38 | "CHANACTION": [" * $n $m"],\r | |
39 | "PRIVACTION": [" * $n $m"],\r | |
40 | "CHANCTCP": ["$n [$h] requested CTCP $x from $c: $m"],\r | |
41 | "PRIVCTCP": ["$n [$h] requested CTCP $x from $-: $m"],\r | |
42 | "CTCPREPLY": ["CTCP $x reply from $n: $m"],\r | |
43 | "OURCHANCTCP": ["[ctcp($t)] $x $m"],\r | |
44 | "OURPRIVCTCP": ["[ctcp($t)] $x $m"],\r | |
45 | "OURTARGETEDCTCP": ["[ctcp($t)] $x $m"]\r | |
46 | };\r | |
47 | \r | |
48 | var Theme = new Class({\r | |
49 | initialize: function(themeDict) {\r | |
50 | this.__theme = {};\r | |
c3efd9cc | 51 | \r |
da4b5be7 CP |
52 | for(var k in DefaultTheme)\r |
53 | this.__theme[k] = DefaultTheme[k];\r | |
c3efd9cc | 54 | \r |
da4b5be7 CP |
55 | if(themeDict)\r |
56 | for(var k in themeDict)\r | |
57 | this.__theme[k] = themeDict[k];\r | |
58 | \r | |
59 | for(var k in this.__theme) {\r | |
60 | if(k == "PREFIX")\r | |
61 | continue;\r | |
62 | \r | |
63 | var data = this.__theme[k];\r | |
64 | if(data[1]) {\r | |
65 | this.__theme[k] = this.__theme["PREFIX"] + data[0];\r | |
66 | } else {\r | |
67 | this.__theme[k] = data[0];\r | |
68 | }\r | |
69 | }\r | |
70 | },\r | |
71 | __dollarSubstitute: function(x, h) {\r | |
c3efd9cc | 72 | var msg = [];\r |
da4b5be7 | 73 | \r |
c3efd9cc CP |
74 | var n = x.split("");\r |
75 | for(var i=0;i<n.length;i++) {\r | |
76 | var c = n[i];\r | |
77 | if(c == "$" && (i <= n.length - 1)) {\r | |
78 | var c2 = n[++i];\r | |
79 | \r | |
80 | var o = ThemeControlCodeMap[c2];\r | |
e2757a91 | 81 | if(!o)\r |
c3efd9cc | 82 | o = h[c2];\r |
e2757a91 CP |
83 | if(o)\r |
84 | msg.push(o);\r | |
c3efd9cc CP |
85 | } else {\r |
86 | msg.push(c);\r | |
87 | }\r | |
88 | }\r | |
89 | \r | |
90 | return msg.join("");\r | |
da4b5be7 CP |
91 | },\r |
92 | message: function(type, data) {\r | |
93 | var msg = this.__theme[type];\r | |
c3efd9cc | 94 | \r |
da4b5be7 | 95 | msg = this.__dollarSubstitute(msg, data);\r |
c3efd9cc CP |
96 | \r |
97 | return msg;\r | |
98 | }\r | |
da4b5be7 | 99 | });\r |