Sto cercando di scrivere un semplice componente pulsante per chiamare una funzione chiamata toUni per elaborare tutto il testo o il testo selezionato (selezionato è preferito). Posso creare un semplice pulsante dal tutorial ed elaborare l’intero testo del compositore e aggiungere il mio testo elaborato all’area del compositore. (il risultato è un testo doppio ripetuto).
Come sostituisco tutto il testo dalla finestra del compositore (una volta che ho fatto qualche elaborazione)?
Come ottengo il testo selezionato dalla finestra del compositore?
Come sostituisco il testo selezionato dalla finestra del compositore (una volta che ho fatto l’elaborazione)?
Vedo del codice che ha
getSelected();
replaceText();
Ma quando lo combino con e.getSelected(); o e.replaceText(old, new);, non funziona e presumo che ci sia una discrepanza di funzioni o un crash perché non mostra la mia finestra di avviso per darmi un feedback.
Posso usare getText(); e addText() con successo dal codice del tuo git ref qui. Ma non riesco a capire come eliminare i contenuti dopo averli elaborati (in modo da poter usare addText() e poi sostituire tutto).
Ma preferirei trovare il testo selezionato e sostituirlo.
Attualmente il mio codice è il seguente, che aggiunge una seconda copia dell’intero testo del compositore subito sotto, ma con alcune modifiche. Questo confonde l’utente.
Devo sostituire completamente tutto il testo… o elaborare solo le parole “selezionate”. (o entrambi)
Ho creato una versione live qui
<script type="text/discourse-plugin" version="0.8">
api.onToolbarCreate(function(toolbar) {
toolbar.addButton({
trimLeading: true,
id: "buttonID",
group: "insertions",
label: "Pāḷi", // perché questo viene visualizzato come en.pali?
title: "add pali",
perform: function(e) {
const sel = e.getText();
//alert(sel);
const vel = toUni(sel);
return e.addText("\n--------------------new text--------------------\n" + vel + "\n--------------------end text--------------------");
}
});
});
//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>