Word scrambler
Keeps first and last character in a word but randomises the ones in the middle.
by SHELDON PASCIAK
HTML
<div id="output">TRUMP LOVES STORMY DANIELS AND KAREN MCDOUGAL - KANYE FOR PRESIDENT</div>
<div></div>
JavaScript
// The Fisher-Yates shuffle - See http://stackoverflow.com/a/3943985/203371
String.prototype.shuffle = function () {
var a = this.split(""),
n = a.length;
for (var i = n - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
return a.join("");
};
var shufflePreserveFirstLast = function (input) {
if (input.length > 2) {
var firstCharacter = input[0];
var lastCharacter = input[input.length - 1];
var internalCharacters = input.substring(1, input.length - 1);
return firstCharacter + internalCharacters.shuffle() + lastCharacter;
} else {
return input;
}
};
function GetScrambledText(text){
var tokenisedString = text.split(" ");
var shuffledOutput = "";
$.each(tokenisedString, function (key, value) {
shuffledOutput += shufflePreserveFirstLast(value) + " ";
});
return shuffledOutput;
}
function recursiveReplace(node) {
if (node.nodeType == 3) { // text node
node.nodeValue = node.nodeValue.replace(node.nodeValue, GetScrambledText(node.nodeValue));
} else if (node.nodeType == 1) { // element
$(node).contents().each(function () {
recursiveReplace(this);
});
}
}
recursiveReplace(document.body);