I personally love both JavaScript and Python. For this reason, from time to time I like to port functions that are available in Python, over to JavaScript. The following is a port of the expandTabs function.
String.prototype.expandTabs = function(tabSize) {
tabSize = Math.min(Math.max(parseInt(+tabSize || 8), 1), 32);
return this.replace(/^.*\t.*$/gm, function(line) {
var allBefore = "";
return line.replace(/(.*?)(\t+)/g, function(match, before, tabs) {
allBefore += before;
tabs = new Array(1 + tabSize * tabs.length - allBefore.length % tabSize).join(" ");
allBefore += tabs;
return before + tabs;
});
});
};
The biggest difference between this JavaScript version and the Python version is the limitation of a 32 character tab size. If you want to increase the maximum tab size, simply change 32 to something else.
Pingback: JavaScript – String.prototype.expandTabs() Revisited | Chris West's Blog