JSFiddle - React, Tailwind, and code Playground
by Michael Russell
JavaScript
var ConvertToProgressivePresent1 = (function() {
// cache this regex
var rProgressivePresent = /\b(?:(submi(t))|(creat|sav|updat)e)\b/i;
return function(phrase) {
return phrase.replace(rProgressivePresent, "$1$2$3ing");
};
}());
var ConvertToProgressivePresent2 = (function() {
var replaceValues = {
"Submit": "Submitting",
"Create": "Creating",
"Update": "Updating",
"Save": "Saving"
}
return function(phrase) {
var matched = false;
for (var item in replaceValues) {
phrase = phrase.replace(new RegExp(item, 'i'), function(match) {
matched = true;
return replaceValues[item].replace(replaceValues[item].charAt(0), match.charAt(0));
});
if (matched) break;
}
return phrase;
};
}());
var funcs = {
"ConvertToProgressivePresent1": ConvertToProgressivePresent1,
"ConvertToProgressivePresent2": ConvertToProgressivePresent2
};
var tests = [
["Submit Report", "Submitting Report"],
["Create New", "Creating New"],
["Update", "Updating"],
["Save Item", "Saving Item"],
["Create New Update", "Creating New Update"],
["submit", "submitting"],
["Save Creation", "Saving Creation"],
["update", "updating"]
];
var errors = [],
i = 0,
test;
while (test = tests[i++]) {
var original = test[0],
answer = test[1];
for (var name in funcs) {
var attempt = funcs[name](original);
if (attempt !== answer) {
errors.push(name + " fails test: '" + original + "' with '" + attempt + "'");
}
}
}
alert(errors.join("\n") || "All tests passed");