Estoy intentando escribir un componente de botón simple para llamar a una función llamada toUni para procesar todo el texto o el texto seleccionado (se prefiere el seleccionado). Puedo hacer un botón simple del tutorial y procesar todo el texto del compositor y agregar mi texto procesado al área del compositor. (el resultado es texto doblemente repetido).
¿Cómo reemplazo todo el texto de la ventana del compositor (una vez que he hecho algún procesamiento)?
¿Cómo obtengo el texto seleccionado de la ventana del compositor?
¿Cómo reemplazo el texto seleccionado de la ventana del compositor (una vez que he hecho el procesamiento)?
Veo algo de código que tiene
getSelected();
replaceText();
Pero cuando lo combino con e.getSelected(); o e.replaceText(old, new);, no funciona y supongo que hay una falta de coincidencia de funciones o un error porque no muestra mi cuadro de alerta para darme retroalimentación.
Puedo usar getText(); y addText() con éxito de su código git ref aquí. Pero no puedo averiguar cómo eliminar el contenido después de procesarlo (para poder usar addText() y luego reemplazar todo).
Pero prefiero encontrar el texto seleccionado y reemplazarlo.
Actualmente, mi código está a continuación, que agrega una segunda copia de todo el texto del compositor directamente debajo, pero con algunas modificaciones. Esto confunde al usuario.
Necesito reemplazar todo el texto por completo… o procesar solo las palabras “seleccionadas”. (o ambos)
Hice una versión en vivo aquí
<script type="text/discourse-plugin" version="0.8">
api.onToolbarCreate(function(toolbar) {
toolbar.addButton({
trimLeading: true,
id: "buttonID",
group: "insertions",
label: "Pāḷi", // ¿por qué esto aparece como en.pali?
title: "agregar 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--------------------\n");
}
});
});
//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>