User:Quarl/autoreplace.js
// User:Quarl/autoreplace.js - provides capability to replace strings (regular expressions) in edit boxes on submission.
// Strings between
// depends: wikipage.js, wikiedit.js, util.js
// recommends: smartsubmit.js
// external entry points:
// autoreplace.addReplacement("string", "replacement" || replacement_function);
// quarl 2006-01-04 initial version
// test:
// javascript:alert(autoreplace_replace_string_nonowiki("2 x 3
// javascript:alert(autoreplace_replace_strings("a ~~"+"~~ foo
//
autoreplace = new Object();
autoreplace.enabled = true;
autoreplace.replacements = Array();
// add a replacement
autoreplace.addReplacement = function(str, replacement) {
autoreplace.replacements.push([str,replacement]);
}
// deprecated
autoreplace_add = autoreplace.addReplacement;
autoreplace.fToStr = function(t) {
if (typeof t == 'function') t = t();
return ""+t;
}
autoreplace.replaceString = function(text, str, replacement) {
return text.replace(new RegExp(str,'g'), replacement);
}
autoreplace.replaceStringNoNowiki = function(text, str, replacement) {
var rtext = '';
while ( text.match(/
(?:.|\n)*?<\/nowiki>|/) ) { // save these before they get clobbered!
var left = RegExp.leftContext;
var match = RegExp.lastMatch;
var right = RegExp.rightContext;
rtext += autoreplace.replaceString(left, str, replacement) + match;
text = right;
}
rtext += autoreplace.replaceString(text, str, replacement)
return rtext;
}
autoreplace.replaceStrings = function(text) {
if (!text) return text;
for (i in autoreplace.replacements) {
r = autoreplace.replacements[i];
text = autoreplace.replaceStringNoNowiki(text, r[0], autoreplace.fToStr(r[1]));
}
return text;
}
autoreplace.preSubmitHook = function(editor, data, button) {
if (!autoreplace.enabled) return;
if (!data.wpTextbox1) return;
data.wpTextbox1 = autoreplace.replaceStrings(data.wpTextbox1);
}
autoreplace.load = function() {
WikiEditor.addPreSubmitHook(autoreplace.preSubmitHook);
}
$(autoreplace.load);
//