JSFiddle - React, Tailwind, and code Playground
HTML
<div id="spinned"></div>
<button id="spin-button">Spin</button>
JavaScript
var spinTxt = "{Des décennies durant|Depuis de nombreuses années|Au jour le jour|A tout moment|Quoi qu'il arrivât|Tout au long de sa carrière}, {cet enseignant hors du commun|ce distingué professeur|ce maître chevronné|ce serviteur dévoué|cet esprit éclairé|ce formateur né|ce soldat du savoir|ce brillant élément} {a développé|a produit|a proposé|a construit|a créé|a conçu|a élaboré} {à la satisfaction générale|avec compétence|avec minutie|allègrement|avec talent|avec enthousiasme} {des documents de grande qualité|des leçons irréprochables|une pédagogie d'exception|des exercices géniaux|des pages remarquables|des modules interactifs des plus intéressants} {en dépit de|malgré|nonobstant} {toutes les|la multitude de} {querelles|cabales|calomnies|vexations|duperies} {qu'il a dû affronter|dont il se serait bien passé|menées contre lui|dont il fut l'objet|semées sous ses pas|ourdies contre lui}.";
function contentSpinning(txt) {
var matches = txt.match(/{([^{}]*)}/g);
if (!matches) return txt;
for (i in matches) {
spin = matches[i]+'';
ori_spin = spin;
spin = spin.replace("{", "").replace("}", "");
spin_strs = spin.split('|');
txt = txt.replace(ori_spin, spin_strs[Math.floor(Math.random() * spin_strs.length)]);
}
return contentSpinning(txt);
}
document.getElementById('spin-button').onclick = function () {
document.getElementById('spinned').innerHTML = contentSpinning(spinTxt);
return false;
};