Estou tentando escrever um componente de botão simples para chamar uma função chamada toUni para processar todo o texto ou o texto selecionado (o selecionado é preferível). Posso fazer um botão simples do tutorial e processar todo o texto do compositor e adicionar meu texto processado à área do compositor. (o texto repetido duas vezes é o resultado).
Como substituo todo o texto da janela do compositor (depois de ter feito algum processamento)
Como obtenho o texto selecionado da janela do compositor
Como substituo o texto selecionado da janela do compositor (depois de ter feito o processamento).
Vejo algum código que tem
getSelected();
replaceText();
Mas quando o combino com e.getSelected(); ou e.replaceText(old, new);, não funciona e presumo que haja alguma incompatibilidade de função ou uma falha porque ele não mostra minha caixa de alerta para me dar feedback.
Posso usar getText(); e addText() com sucesso do seu código git ref aqui. Mas não consigo descobrir como excluir o conteúdo depois de processar (para que eu possa adicionarText() e depois substituir tudo.
Mas prefiro encontrar o texto selecionado e substituí-lo.
Atualmente, meu código está abaixo, que adiciona uma segunda cópia de todo o texto do compositor logo abaixo, mas com algumas modificações. Isso confunde o usuário.
Preciso substituir totalmente todo o texto… ou processar apenas as palavras “selecionadas”. (ou ambos)
Fiz uma versão ao vivo aqui
<script type="text/discourse-plugin" version="0.8">
api.onToolbarCreate(function(toolbar) {
toolbar.addButton({
trimLeading: true,
id: "buttonID",
group: "insertions",
label: "Pāḷi", // por que isso aparece como en.pali?
title: "adicionar pali",
perform: function(e) {
const sel = e.getText();
//alert(sel);
const vel = toUni(sel);
return e.addText("\n--------------------novo texto--------------------\n" + vel + "\n--------------------fim do texto--------------------");
}
});
});
//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>