]> git.wh0rd.org - tt-rss.git/blame - lib/xsl_mop-up.js
pngcrush.sh
[tt-rss.git] / lib / xsl_mop-up.js
CommitLineData
a5472764
AD
1// -*-coding: latin-1;-*-
2// Time-stamp: "2006-05-17 22:06:46 ADT" sburke@cpan.org
3
4// A workaround for XSL-to-XHTML systems that don't
5// implement XSL 'disable-output-escaping="yes"'.
6//
7// sburke@cpan.org, Sean M. Burke.
8// - I hereby release this JavaScript code into the public domain.
9
10var is_decoding;
11var DEBUG = 0;
12
13function complaining (s) { alert(s); return new Error(s,s); }
14
15if(!( document.getElementById && document.getElementsByName ))
16 throw complaining("Your browser is too old to render this page properly."
17 + " Consider going to getfirefox.com to upgrade.");
18
19function check_decoding () {
20 var d = document.getElementById('cometestme');
21 if(!d) {
22 throw complaining("Can't find an id='cometestme' element?");
23 } else if(!('textContent' in d)) {
24 // It's a browser with a halfassed DOM implementation (like IE6)
25 // that doesn't implement textContent! Assume that if it's that
26 // dumb, it probably doesn't implement disable-content-encoding.
27
28 } else {
29 var ampy = d.textContent;
30 if(DEBUG > 1) { alert("Got " + ampy); }
31
32 if(ampy == undefined) throw complaining("'cometestme' element has undefined text content?!");
33 if(ampy == '' ) throw complaining("'cometestme' element has empty text content?!" );
34
35 if (ampy == "\x26" ) { is_decoding = true; }
36 else if (ampy == "\x26amp;" ) { is_decoding = false; }
37 else { throw complaining('Insane value: "' + ampy + '"!'); }
38 }
39
40 var msg =
41 (is_decoding == undefined) ? "I can't tell whether the XSL processor supports disable-content-encoding!D"
42 : is_decoding ? "The XSL processor DOES support disable-content-encoding"
43 : "The XSL processor does NOT support disable-content-encoding"
44 ;
45 if(DEBUG) alert(msg);
46 return msg;
47}
48
49
50function go_decoding () {
51 check_decoding();
52
53 if(is_decoding) {
54 DEBUG && alert("No work needs doing -- already decoded!");
55 return;
56 }
57
58 var to_decode = document.getElementsByName('decodeme');
59 if(!( to_decode && to_decode.length )) {
60 DEBUG && alert("No work needs doing -- no elements to decode!");
61 return;
62 }
63
64 if(!( ( "innerHTML" in to_decode[0]) && ( "textContent" in to_decode[0]) ))
65 throw complaining( "Your JavaScript version doesn't implement DOM " +
66 "properly enough to show this page correctly. " +
67 "Consider going to getfirefox.com to upgrade.");
68
69 var s;
70 for(var i = to_decode.length - 1; i >= 0; i--) {
71 s = to_decode[i].textContent;
72
73 if(
74 s == undefined ||
75 (s.indexOf('&') == -1 && s.indexOf('<') == -1)
76 ) {
77 // the null or markupless element needs no reworking
78 } else {
79 to_decode[i].innerHTML = s; // that's the magic
80 }
81 }
82
83 return;
84}
85
86//End