CKEditorの正規表現に一致するすべてのテキストをハイライト(つまり、色でスパンをラップするなど)することができます。私はおそらく、これを行うためのボタンとハイライトを削除するボタンを追加するだろう。私の具体的なユースケースは、HTMLテンプレート内のすべてのひげ剃り変数を強調表示することです(本当に口ひげ変数がある場所を確認するのが簡単です)。CKeditorの正規表現と一致する要素をどのように強調表示できますか?
正規表現マッチをスパンと置き換えてキャプチャグループに置き換えたバージョンを実装しました。これは、私がテストするときにいくつかのテンプレートを壊すように見えます。
ハイライトを削除するには、editor.removeStyleを使用します。これはすべての場合に機能しないようです。
editor.addCommand('highlightMustache', {
exec: function(editor) {
editor.focus();
editor.document.$.execCommand('SelectAll', false, null);
var mustacheRegex = /{{\s?([^}]*)\s?}}/g;
var data = editor.getData().replace(mustacheRegex, '<span style="background-color: #FFFF00">{{ $1 }}</span>');
editor.setData(data);
}
});
// command to unhighlight mustache parameters
editor.addCommand('unhighlightMustache', {
exec: function(editor) {
editor.focus();
editor.document.$.execCommand('SelectAll', false, null);
var style = new CKEDITOR.style({ element:'span', styles: { 'background-color': '#FFFF00' },type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1 });
editor.removeStyle(style);
editor.getSelection().removeAllRanges();
}
});
ありがとう:
は、ここで私が実装したものの一例です!
私はほとんど同じ問題を抱えています。私はCKeditorで入力中に正規表現に一致するものを強調表示する必要があります。 – Polygnome
"これはテスト時にいくつかのテンプレートで壊れているようです。" - それはどのように壊れますか?問題を再現できるように、質問にサンプルテンプレートを含めることもできますか?同様に、「私はeditor.removeStyleを使用していますが、これはすべてのケースで機能しないようです」 - 動作しない場所の例を挙げることはできますか? –
gsastryと@Polygnome今あなたの好みの解決策は何ですか?あなたはおそらくそれの例を持っていますか?同様に、開始位置と終了位置のマーカー「{」と「}」を慎重に強調表示する必要があります。 – melutovich