This doc is outdated, please see the new version
As suggested by Ingo Chao in a problem with the impression of the tag pre, I've developed a Javascript function (beta!) to convert any <pre class="code"> element into an ordered list.
This demonstrates that my Javascript is better than my English.
Please see source (or below) for details.
Regards,
Choan C. Gálvez <choan@alice.0z0ne.com>
function doListings() {
var pres = document.getElementsByTagName('pre');
for (var i = 0; i < pres.length; i++) {
var pre = pres[i];
if (pre.className != 'code') {
continue;
};
if (document.all) {
var content = pre.innerText;
} else {
var content = pre.firstChild.nodeValue;
}
content = content.replace(/^(\n|\r\n)/, ''); /* trim empty lines at start */
content = content.replace(/(\n|\r\n)$/, ''); /* trim empty lines at the end */
content = content.replace('XXXdummyXXX', 'YYYdummyYYY');
content = content.replace(/\n|\r\n/g, 'XXXdummyXXX'); /* dummy replace, there are some bugs with empty lines */
var lines = content.split('XXXdummyXXX');
var ol = document.createElement('ol');
ol.className = 'code';
for (var j = 0; j < lines.length; j++) {
lines[j] = lines[j].replace(/\t/g, ' ');
lines[j] = lines[j].replace('YYYdummyYYY', 'XXXdummyXXX');
var cname = 'indent' + (countSpaces(lines[j]) / 4);
var li = document.createElement('li');
var span = document.createElement('span');
span.className = cname;
var content = document.createTextNode(lines[j] + "\u00A0"); /* Unicode non-breaking space fix for Firefox */
span.appendChild(content);
li.appendChild(span);
ol.appendChild(li);
};
pre.parentNode.replaceChild(ol, pre);
};
function countSpaces(s) {
var spaceCount = 0;
for (var i = 0; i < s.length; i++) {
if (' ' == s.substr(i,1)) {
spaceCount++;
} else {
break;
}
};
return spaceCount;
}
}
window.onload = doListings;
Created 2005-06/23