長いテキスト文字列を受け取り、テキスト内のプレースホルダーを識別し、プレースホルダーの代わりに値を指定するようにユーザーに求める関数を作成しようとしています。プレースホルダーのマークアップは、画像やリンクに使用されるマークダウンに似ています。
some text, some more text, ?[name][description] more text, not just commas
name
とdescription
は任意のテキストの連続です。これらのプレースホルダーを見つけたら、名前と説明を使用して適切にフォーマットされたダイアログをポップアップし、ユーザーに代わりの値を提供してもらいたいと考えています。
htmlPrompt
HTML の一部 (プロンプトの主要部分) を渡す場所で、テキスト ボックスがあり、結果と共に提供したコールバック関数を呼び出します (またはCancelnull
の場合)が押されます)、次の署名があります。
function (htmlText, inputStartValue, callback)
この関数をプラグインする前に、大まかな準備を書きました。
myText = myText.replace(/(\?\[(.+)\][ ]?(?:\n[ ]*)?\[(.+)\])/g,
function (wholematch, m1, m2, m3) {
var repValue = prompt(m2);
if (repValue == null)
{
return m1;
}
return repValue;
});
これはDOM組み込みprompt
メソッドを使用します-フォーマットに関しては、実際には適切な仕事をしません。
ただし、プラグインの方法は考えられません。モーダル ダイアログをシミュレートhtmlPrompt
し、 を呼び出して最終結果を提供するだけです。callback
match
ではなくの結果を使用して、手動で置換を行うことを考えましたがreplace
、私が見る限り、 によって返される値match
は単なる文字列です。全体のテキスト内)。
それとも、私がこれについて完全に間違っていると思いますか? 私が望む全体的な流れは次のとおりです。
- テキスト内の各プレースホルダーを見つける
name
との両方のdescription
値を使用して、ユーザーに交換を促す- テキスト内のプレースホルダー式をユーザーが指定した値に置き換えます。