Better gsub method for Prototype library.
Today I needed to use the method gsub implemented by the Prototype, the javascript library used by Rails. I perceived that it was a little different of ruby’s one.
The ruby method return a array if called without replacement string, but prototype’s doesn’t.
So, I wrote my own gsub method to be used with prototype that return an array when called without replacement string.
Enjoy!
[js]
// Code by Rafael Lima (http://rafael.adm.br)
Object.extend(String.prototype, {
gsub: function(pattern, replacement) {
var result = new Array(), source = this, match;
var replace = (undefined != replacement)
if (replace) {
replacement = arguments.callee.prepareReplacement(replacement);
}
while (source.length > 0) {
if (match = source.match(pattern)) {
result[result.length] = source.slice(0, match.index) + ((replace) ? (replacement(match) || ”).toString() : match[0] );
source = source.slice(match.index + match[0].length);
} else {
result[result.length] = source, source = ”;
}
}
return (replace) ? result.join(”) : result;
}
});
[/js]











