コンポーネントのシンプルなボタンを作成して、toUni という関数を呼び出し、すべてのテキストまたは選択したテキスト(選択した方が優先)を処理しようとしています。チュートリアルから簡単なボタンを作成し、コンポーザーのテキスト全体を処理して、処理済みのテキストをコンポーザー領域に追加できます。(結果としてテキストが二重に繰り返されます)。
処理を行った後、コンポーザーウィンドウのすべてのテキストを置き換えるにはどうすればよいですか?
コンポーザーウィンドウから選択したテキストを取得するにはどうすればよいですか?
処理を行った後、コンポーザーウィンドウの選択したテキストを置き換えるにはどうすればよいですか?
次のようなコードが見られます。
getSelected();
replaceText();
しかし、e.getSelected(); や e.replaceText(old, new); と組み合わせると機能せず、関数の不一致かクラッシュが発生していると思われます。アラートボックスが表示されず、フィードバックが得られません。
Gitの参照コード こちら の getText(); と addText() は正常に使用できます。しかし、処理後にコンテンツを削除する方法がわかりません(addText() を呼び出してすべてを置き換えるため)。
しかし、選択したテキストを見つけてそれを置き換える方が望ましいです。
現在、私のコードは以下のようになっています。これは、コンポーザーテキスト全体を少し変更したものをその下に直接追加しますが、ユーザーにとっては混乱を招きます。
すべてのテキストを完全に置き換えるか、選択した単語のみを処理する必要があります。(または両方)
ライブバージョンは こちら で確認できます。
<script type="text/discourse-plugin" version="0.8">
api.onToolbarCreate(function(toolbar) {
toolbar.addButton({
trimLeading: true,
id: "buttonID",
group: "insertions",
label: "Pāḷi", // なぜこれが 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>