Ich versuche, eine einfache Button-Komponente zu schreiben, um eine Funktion namens toUni aufzurufen, die entweder den gesamten Text oder den ausgewählten Text verarbeitet (ausgewählter Text wird bevorzugt). Ich kann einen einfachen Button aus dem Tutorial erstellen und den gesamten Text des Komponisten verarbeiten und meinen verarbeiteten Text zum Komponistenbereich hinzufügen. (doppelt wiederholter Text ist das Ergebnis).
Wie ersetze ich den gesamten Text aus dem Komponistenfenster (nachdem ich einige Verarbeitungen durchgeführt habe)?
Wie erhalte ich den ausgewählten Text aus dem Komponistenfenster?
Wie ersetze ich den ausgewählten Text aus dem Komponistenfenster (nachdem ich Verarbeitungen durchgeführt habe)?
Ich sehe einige Code, der Folgendes enthält:
getSelected();
replaceText();
Aber wenn ich es mit e.getSelected(); oder e.replaceText(old, new); kombiniere, funktioniert es nicht und ich nehme an, dass es eine Funktionsübereinstimmung oder einen Absturz gibt, da meine Alert-Box zur Rückmeldung nicht angezeigt wird.
Ich kann getText(); und addText() erfolgreich aus Ihrem Git-Ref-Code hier verwenden. Aber ich kann nicht herausfinden, wie ich den Inhalt löschen kann, nachdem ich ihn verarbeitet habe (damit ich addText() aufrufen und dann alles ersetzen kann).
Ich bevorzuge es jedoch, den ausgewählten Text zu finden und diesen zu ersetzen.
Derzeit fügt mein Code unten eine zweite Kopie des gesamten Komponistentextes direkt darunter ein, jedoch mit einigen Änderungen. Dies verwirrt den Benutzer.
Ich muss entweder den gesamten Text vollständig ersetzen … oder nur die „ausgewählten“ Wörter verarbeiten. (oder beides)
Ich habe eine Live-Version hier erstellt
<script type="text/discourse-plugin" version="0.8">
api.onToolbarCreate(function(toolbar) {
toolbar.addButton({
trimLeading: true,
id: "buttonID",
group: "insertions",
label: "Pāḷi", // warum wird das als en.pali angezeigt?
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>