pidgin/gtkdebug.html

Tue, 07 May 2013 05:04:46 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Tue, 07 May 2013 05:04:46 -0400
changeset 33923
0fcc5635daba
parent 33922
61f997b47954
child 33925
e5b703bc9f03
permissions
-rw-r--r--

Rewrite debug window filter in JS.

Note, this does cause a couple regressions, but they are probably not
that big a deal. First, the JS regular expression syntax is slightly
different. Second, the JS regex API lacks a way to reliably determine
the location of matched groups, so we can't highlight just the groups
and must highlight the entire expression.

I suspect that none of our users ever had to use any fancy regex in the
debug window, and that most of our developers didn't even know it could
be done. So I doubt these regressions will cause much pain.

33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
1 <!DOCTYPE html>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
2 <html>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
3 <head>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
4 <style>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
5 body{white-space:pre-wrap;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
6 div.l0{color:#000000;} /* All debug levels. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
7 div.l1{color:#666666;} /* Misc. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
8 div.l2{color:#000000;} /* Information. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
9 div.l3{color:#660000;} /* Warnings. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
10 div.l4{color:#FF0000;} /* Errors. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
11 div.l5{color:#FF0000;font-weight:bold;} /* Fatal errors. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
12 /* Filter levels */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
13 div#pause~div{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
14 body.l1 div.l0{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
15 body.l2 div.l0,body.l2 div.l1{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
16 body.l3 div.l0,body.l3 div.l1,body.l3 div.l2{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
17 body.l4 div.l0,body.l4 div.l1,body.l4 div.l2,body.l4 div.l3{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
18 body.l5 div.l0,body.l5 div.l1,body.l5 div.l2,body.l5 div.l3,body.l5 div.l4{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
19 /* Regex */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
20 div.hide{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
21 span.regex{background-color:#ffafaf;font-weight:bold;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
22 </style>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
23 <script>
33923
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
24 regex = {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
25 clear: function () {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
26 var list, i;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
27 /* Remove highlighting SPANs */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
28 list = document.getElementsByClassName('regex');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
29 i = list.length;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
30 while (i--) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
31 var span = list[i];
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
32 var parent = span.parentNode;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
33 var content = span.textContent;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
34 var text = document.createTextNode(content);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
35 parent.replaceChild(text, span);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
36 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
37
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
38 /* Remove hidden DIVs */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
39 list = document.getElementsByClassName('hide');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
40 i = list.length;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
41 while (i--) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
42 list[i].classList.remove('hide');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
43 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
44
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
45 this.enabled = false;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
46 },
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
47
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
48 highlightTextNodes: function (div, start_pos, end_pos) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
49 var data = [], node, range, span, contents;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
50 var ind, end_ind
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
51 var this_start, this_end;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
52
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
53 ind = 0;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
54 div.normalize();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
55 node = div;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
56
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
57 /* First, find the container nodes and offsets to apply highlighting. */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
58 do {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
59 if (node.nodeType === Node.TEXT_NODE) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
60 end_ind = ind + node.length;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
61
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
62 if (start_pos <= ind)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
63 this_start = 0;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
64 else if (start_pos < end_ind)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
65 this_start = start_pos - ind;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
66 else
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
67 this_start = -1;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
68
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
69 if (end_pos < end_ind)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
70 this_end = end_pos - ind;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
71 else
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
72 this_end = end_ind - ind;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
73
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
74 if (this_start != -1 && this_start < this_end) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
75 data.push(this_end, this_start, node);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
76 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
77
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
78 ind = end_ind;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
79 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
80
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
81 if (node.hasChildNodes()) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
82 node = node.firstChild;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
83 } else {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
84 while (node != div) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
85 var next = node.nextSibling;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
86 if (next) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
87 node = next;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
88 break;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
89 } else {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
90 node = node.parentNode;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
91 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
92 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
93 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
94 } while (node != div);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
95
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
96 /* Second, apply highlighting to saved sections. Changing the DOM is
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
97 automatically reflected in all WebKit API, so we have to do this after
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
98 finding the offsets, or things could get complicated. */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
99 while (data.length) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
100 node = data.pop();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
101 this_start = data.pop();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
102 this_end = data.pop();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
103
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
104 range = document.createRange();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
105 range.setStart(node, this_start);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
106 range.setEnd(node, this_end);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
107
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
108 span = document.createElement('span');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
109 span.className = 'regex';
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
110
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
111 contents = range.extractContents();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
112 range.insertNode(span);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
113 span.appendChild(contents);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
114 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
115 },
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
116
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
117 match: function (div) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
118 var text, match_info;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
119 var m, count, start_pos, end_pos;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
120
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
121 text = div.textContent;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
122 if (!text)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
123 return;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
124
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
125 /* We do a first pass to see if it matches at all. If it does we work out
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
126 * the offsets to highlight.
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
127 */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
128 this.regex.lastIndex = 0;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
129 var match_info = this.regex.exec(text);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
130 if ((match_info != null) != this.invert) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
131 /* If we're not highlighting or the expression is inverted, we're
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
132 * done and move on.
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
133 */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
134 if (!this.highlight || this.invert)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
135 return;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
136
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
137 do {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
138 if (match_info === null)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
139 break;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
140
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
141 count = match_info.length;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
142 if (count === 1)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
143 m = 0;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
144 else
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
145 m = 1;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
146
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
147 /* We do this because JS doesn't provide a sufficient means to
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
148 determine the indices of matched groups. So we're just going
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
149 to highlight the entire match instead. */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
150 m = 0; count = 1;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
151
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
152 for (; m < count; m++) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
153 start_pos = match_info.index;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
154 end_pos = this.regex.lastIndex;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
155 if (end_pos == -1)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
156 break;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
157
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
158 this.highlightTextNodes(div, start_pos, end_pos);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
159 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
160
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
161 /* Workaround broken API for empty matches */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
162 if (match_info.index == this.regex.lastIndex)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
163 this.regex.lastIndex++;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
164 } while (match_info = this.regex.exec(text));
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
165 } else {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
166 div.classList.add('hide');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
167 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
168 },
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
169
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
170 filterAll: function (str, inv, high) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
171 this.regex = new RegExp(str, 'gi');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
172 this.invert = inv;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
173 this.highlight = high;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
174 this.enabled = true;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
175 var list = document.getElementsByTagName('div');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
176 for (var i = 0; i < list.length; i++)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
177 this.match(list[i]);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
178 },
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
179
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
180 highlight: false,
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
181 invert: false,
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
182 enabled: false,
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
183 regex: undefined
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
184 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
185
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
186 function append(level, time, cat, msg) {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
187 var div = document.createElement('div');
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
188 div.className = 'l' + level;
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
189 div.appendChild(document.createTextNode('(' + time + ') '));
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
190 if (cat) {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
191 var cat_n = document.createElement('b');
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
192 cat_n.appendChild(document.createTextNode(cat + ':'));
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
193 div.appendChild(cat_n);
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
194 div.appendChild(document.createTextNode(' '));
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
195 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
196 div.appendChild(document.createTextNode(msg));
33923
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
197 if (regex.enabled)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
198 regex.match(div);
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
199 document.body.appendChild(div);
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
200 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
201
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
202 function clear() {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
203 document.body.innerHTML = '';
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
204 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
205
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
206 function pauseOutput() {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
207 document.body.insertAdjacentHTML('beforeEnd', '<div id=pause></div>');
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
208 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
209
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
210 function resumeOutput() {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
211 var pause = document.getElementById('pause');
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
212 if (pause) {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
213 var parent = pause.parentNode;
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
214 parent.removeChild(pause);
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
215 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
216 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
217
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
218 function setFilterLevel(l) {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
219 document.body.className = 'l'+l;
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
220 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
221 </script>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
222 </head>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
223 <body class=l0></body>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
224 </html>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
225

mercurial