]> jfr.im git - irc/quakenet/qwebirc.git/blame - static/js/ui/theme.js
Fix colour and $ bugs.
[irc/quakenet/qwebirc.git] / static / js / ui / theme.js
CommitLineData
c3efd9cc
CP
1var ThemeControlCodeMap = {\r
2 "C": "\x03",\r
3 "B": "\x02",\r
4 "U": "\x1F",\r
5 "O": "\x0F",\r
6 "$": "$"\r
7};\r
8\r
9function Theme(values) {\r
10 var theme = {};\r
11 for(var k in DefaultTheme)\r
12 theme[k] = DefaultTheme[k];\r
13 \r
14 if(values)\r
15 for(var k in values)\r
16 theme[k] = values[k];\r
17 \r
18 function preprocess(line, useprefix) {\r
19 if(useprefix)\r
20 return theme["PREFIX"] + line;\r
21 \r
22 return line;\r
23 }\r
24 \r
25 for(var k in theme) {\r
26 if(k == "PREFIX")\r
27 continue;\r
28 var data = theme[k];\r
29 \r
30 theme[k] = preprocess(data[0], data[1]);\r
31 }\r
32 \r
33 var dollarReplace = function(x, h) {\r
34 var msg = [];\r
35 var n = x.split("");\r
36 for(var i=0;i<n.length;i++) {\r
37 var c = n[i];\r
38 if(c == "$" && (i <= n.length - 1)) {\r
39 var c2 = n[++i];\r
40\r
41 var o = ThemeControlCodeMap[c2];\r
e2757a91 42 if(!o)\r
c3efd9cc 43 o = h[c2];\r
e2757a91
CP
44 if(o)\r
45 msg.push(o);\r
c3efd9cc
CP
46 } else {\r
47 msg.push(c);\r
48 }\r
49 }\r
50 \r
51 return msg.join("");\r
52 }\r
53 \r
54 this.message = function(type, data) {\r
55 var msg = theme[type];\r
56 \r
57 //msg = msg.replace("$C", "\x03").replace("$B", "\x02").replace("$U", "\x1F").replace("$O", "\x0F");\r
58 msg = dollarReplace(msg, data);\r
59\r
60 return msg;\r
61 }\r
62}\r