259eda151e5284818cb144cc31e30acc06148519
3 Do syntax highlighting on every textarea inside of a "codeview" element
5 The content of textareas are URLs, not code!
8 var viewSource
= function () {
9 var filename
= location
.hash
;
11 filename
= location
.hash
= "view-source/view-source.js";
13 filename
= lstrip(filename
, "#");
14 var href
= "../" + filename
;
15 replaceChildNodes("filename", "loading ", A({"href": href
}, filename
));
16 replaceChildNodes("code", href
);
17 ext
= filename
.split(".").pop();
24 updateNodeAttributes("code", {"class": classes
[ext
]});
25 syntaxHighlight(filename
);
28 var syntaxHighlight
= function (filename
) {
29 var swapContents
= function (dest
, req
) {
30 replaceChildNodes(dest
, req
.responseText
);
33 var showParsing
= function () {
34 replaceChildNodes("filename",
36 A({"href": "../" + filename
}, filename
)
41 var finishSyntaxHighlight
= function () {
42 dp
.sh
.HighlightAll("code", true, true, false);
43 replaceChildNodes("filename", A({"href": "../" + filename
}, filename
));
44 removeElementClass("codeview", "invisible");
47 var elems
= getElementsByTagAndClassName("textarea", null, "codeview");
48 var dl
= new Deferred();
49 var deferredCount
= 0;
50 var checkDeferredList
= function () {
56 for (var i
= 0; i
< elems
.length
; i
++) {
58 if (elem
.name
!= "code") {
61 var url
= strip(scrapeText(elem
))
62 var d
= doXHR(url
).addCallback(
63 partial(swapContents
, elem
)
66 d
.addCallback(checkDeferredList
);
68 dl
.addCallback(showParsing
);
69 dl
.addCallback(finishSyntaxHighlight
);