update = function() {
let words = RiTa.tokenize(mutableTxt[0]);
let l = Math.ceil(Math.random() * numberOfPossibleReplacements);
for (let j = 0; j < l; j++) {
let r = Math.floor(Math.random() * words.length);
for (let i = r; i < words.length + r; i++) {
let idx = i % words.length;
let word = words[idx].toLowerCase();
if (word.length < 3) continue;
console.log(`word: ${word}`);
let pos = RiTa.tagger.allTags(word)[0];
console.log(`word: ${word} pos: ${pos}`);
let rhymes = RiTa.rhymes(word, { pos });
let sounds = RiTa.soundsLike(word, { pos });
let spells = RiTa.spellsLike(word, { pos });
let similars = [...rhymes, ...sounds, ...spells];
if (similars.length < 2) {
console.log("No sims for " + word);
continue;
}
let next = RiTa.random(similars);
if (next.includes(word) || word.includes(next)) {
continue;
}
if (/[A-Z]/.test(words[idx][0])) {
next = RiTa.capitalize(next);
}
console.log("replace(" + idx + "): " + word + " -> " + next);
words[idx] = next;
break;
}
}
return RiTa.untokenize(words);
}