Я согласен, что по определению ваше регулярное выражение не пропускает UUID. Однако может быть полезно отметить, что если вы ищете особенно глобальные уникальные идентификаторы Microsoft (GUID), существует пять эквивалентных строковых представлений для GUID:
"ca761232ed4211cebacd00aa0057b223"
"CA761232-ED42-11CE-BACD-00AA0057B223"
"{CA761232-ED42-11CE-BACD-00AA0057B223}"
"(CA761232-ED42-11CE-BACD-00AA0057B223)"
"{0xCA761232, 0xED42, 0x11CE, {0xBA, 0xCD, 0x00, 0xAA, 0x00, 0x57, 0xB2, 0x23}}"
На самом деле, кажется, что невозможно использовать конвертер attributeToElement
, поставляемый с CKEditor5. Этот конвертер должен иметь ограниченное предопределенное количество опций, предоставляемых для конвертации, которые будут использоваться как для upcast
, так и для downcast
.
С точки зрения плагина, который я хочу написать (цветной шрифт), этого недостаточно. Я не хочу ограничивать модель приемом нескольких цветов и не использовать другой.
Для большего контроля над upcast
и downcast
необходимо написать собственные функции, которые будут охватывать такие случаи. И который сможет принять любой цвет, вставленный в редактор. Для этого необходимо использовать метод for
. Ниже вы можете найти простое решение, которое будет принимать цвета, определенные в шестнадцатеричном формате, и преобразовывать его в модель. И еще одна функция, которая понизит его до просмотра.
editor.conversion.for( 'upcast' ).elementToAttribute( {
view: {
name: 'span',
styles: {
'color': /#\d+/
}
},
model: {
key: 'color',
value: viewElement => {
const color = viewElement.getStyle( 'color' );
return color.replace( '#', '' );
}
}
} );
editor.conversion.for( 'downcast' ).attributeToElement( {
model: 'color',
view: ( modelAttributeValue, viewWriter ) => viewWriter.createAttributeElement( 'span', {
style: 'color:#' + modelAttributeValue
} );
} );