Voglio essere in grado di evidenziare (cioè avvolgere in un intervallo con un colore, o in un altro modo) tutto il testo che corrisponde a un'espressione regolare in CKEditor. Probabilmente aggiungerei un pulsante per farlo e un pulsante per rimuovere l'evidenziazione. Il mio caso d'uso specifico è quello di evidenziare tutte le variabili dei baffi nei miei modelli HTML (rendere molto facile vedere dove ci sono le variabili dei baffi).Come posso evidenziare elementi che corrispondono a un'espressione regolare in CKeditor?
Ho implementato una versione in cui sostituisco i baffi di regex con uno span e quindi il gruppo di cattura. Sembra che si rompa su alcuni modelli quando eseguo il test.
Per rimuovere l'evidenziazione, utilizzo editor.removeStyle, che non sembra funzionare in tutti i casi.
Ecco un esempio di quello che ho implementato:
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();
}
});
Grazie!
Ho praticamente lo stesso problema.Devo essere in grado di evidenziare qualcosa che corrisponde a una regex durante la digitazione in CKeditor. – Polygnome
"Sembra che si rompa su alcuni modelli quando eseguo il test." - Come si rompe? Puoi anche includere un modello di esempio nella tua domanda in modo che il problema possa essere riprodotto? Allo stesso modo, "Uso editor.removeStyle, che non sembra funzionare in tutti i casi" - Puoi dare un esempio di dove non funziona? –
gsastry e @Polygnome qual è la tua soluzione preferita ora e ne hai forse un esempio? Dato che ho una necessità simile di evidenziare all'inizio e alla fine i marcatori di segnaposto "{" e "}" rispettosamente. – melutovich