Je cherche à écrire un composant de bouton simple pour appeler une fonction appelée toUni afin de traiter soit tout le texte, soit le texte sélectionné (la sélection est préférée). Je peux faire un bouton simple à partir du tutoriel et traiter l’intégralité du texte du compositeur et ajouter mon texte traité à la zone du compositeur. (le texte répété en double est le résultat).
Comment puis-je remplacer tout le texte de la fenêtre du compositeur (une fois que j’ai effectué un traitement
Comment puis-je obtenir le texte sélectionné de la fenêtre du compositeur
Comment puis-je remplacer le texte sélectionné de la fenêtre du compositeur (une fois que j’ai effectué le traitement).
Je vois du code qui contient
getSelected();
replaceText();
Mais lorsque je le combine avec e.getSelected(); ou e.replaceText(old, new);, cela ne fonctionne pas et je suppose qu’il y a une incompatibilité de fonction ou un crash car ma boîte d’alerte ne s’affiche pas pour me donner un retour.
Je peux utiliser getText(); et addText() avec succès à partir de votre code de référence git ici. Mais je n’arrive pas à comprendre comment supprimer le contenu après le traitement (pour pouvoir utiliser addText() et ensuite tout remplacer.
Mais je préfère trouver le texte sélectionné et le remplacer.
Actuellement, mon code ci-dessous ajoute une deuxième copie de l’intégralité du texte du compositeur juste en dessous, mais avec quelques modifications. C’est déroutant pour l’utilisateur.
Je dois soit remplacer totalement tout le texte… soit traiter uniquement les mots “sélectionnés”. (ou les deux)
J’ai créé une version en direct ici
<script type="text/discourse-plugin" version="0.8">
api.onToolbarCreate(function(toolbar) {
toolbar.addButton({
trimLeading: true,
id: "buttonID",
group: "insertions",
label: "Pāḷi", // pourquoi cela s'affiche-t-il comme en.pali ?
title: "ajouter pali",
perform: function(e) {
const sel = e.getText();
//alert(sel);
const vel = toUni(sel);
return e.addText("\n--------------------nouveau texte--------------------\n" + vel + "\n--------------------fin texte--------------------");
}
});
});
//e.replaceText(sel,"hello");
//e.replaceSeelc
//const sel = e.selected();
//let txt = "hello";
//const sel = e.getSelected(0,100 );
function toUni(input) {
if(!input || input == '') return input;
//var nigahita = (DPR_prefs['nigahita']?'ṁ':'ṃ');
//var Nigahita = (DPR_prefs['nigahita']?'Ṁ':'Ṃ');
var nigahita = 'ṃ';
var Nigahita = 'Ṃ';
input = input.replace(/aa/g, 'ā').replace(/ii/g, 'ī').replace(/uu/g, 'ū').replace(/\\.t/g, 'ṭ').replace(/\\.d/g, 'ḍ').replace(/\\\"nk/g, 'ṅk').replace(/\\\"ng/g, 'ṅg').replace(/\\.n/g, 'ṇ').replace(/\\.m/g, nigahita).replace(/\\u1E41/g, nigahita).replace(/\\~n/g, 'ñ').replace(/\\.l/g, 'ḷ').replace(/AA/g, 'Ā').replace(/II/g, 'Ī').replace(/UU/g, 'Ū').replace(/\\.T/g, 'Ṭ').replace(/\\.D/g, 'Ḍ').replace(/\\\"N/g, 'Ṅ').replace(/\\.N/g, 'Ṇ').replace(/\\.M/g, Nigahita).replace(/\\~N/g, 'Ñ').replace(/\\.L/g, 'Ḷ').replace(/\\.ll/g,'ḹ').replace(/\\.r/g,'ṛ').replace(/\\.rr/g,'ṝ').replace(/\\.s/g,'ṣ').replace(/\"s/g,'ś').replace(/\\.h/g,'ḥ');
return input;
}
</script>