I\'m looking at Gruber\'s original Markdown implementation here and the Showdown implementation here.
I\'m comparing the _Detab
function in each. I\'m
There are several bugs in Showdown's detabber. That's why for Stack Overflow's version, I have rewritten it:
function _Detab(text) {
if (!/\t/.test(text))
return text;
var spaces = [" ", " ", " ", " "],
skew = 0,
v;
return text.replace(/[\n\t]/g, function (match, offset) {
if (match === "\n") {
skew = offset + 1;
return match;
}
v = (offset - skew) % 4;
skew = offset + 1;
return spaces[v];
});
}
It detabs correctly, and if I recall my measurements correctly, this is about as fast (maybe a little slower) as the original in older IE versions, and much faster in newer browsers.
See http://code.google.com/p/pagedown/wiki/PageDown for our full version of Showdown.