Как определить CKEditor5 двусторонний преобразователь с представлением, определенным как RegExp или функция?

Я согласен, что по определению ваше регулярное выражение не пропускает 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}}" 
1
задан Mateusz Samsel 4 March 2019 в 11:27
поделиться

1 ответ

На самом деле, кажется, что невозможно использовать конвертер attributeToElement , поставляемый с CKEditor5. Этот конвертер должен иметь ограниченное предопределенное количество опций, предоставляемых для конвертации, которые будут использоваться как для upcast, так и для downcast.

С точки зрения плагина, который я хочу написать (цветной шрифт), этого недостаточно. Я не хочу ограничивать модель приемом нескольких цветов и не использовать другой.

Для большего контроля над upcast и downcast необходимо написать собственные функции, которые будут охватывать такие случаи. И который сможет принять любой цвет, вставленный в редактор. Для этого необходимо использовать метод for . Ниже вы можете найти простое решение, которое будет принимать цвета, определенные в шестнадцатеричном формате, и преобразовывать его в модель. И еще одна функция, которая понизит его до просмотра.

Upcast:

editor.conversion.for( 'upcast' ).elementToAttribute( {
    view: {
        name: 'span',
        styles: {
            'color': /#\d+/
        }
    },
    model: {
        key: 'color',
        value: viewElement => {
            const color = viewElement.getStyle( 'color' );
            return color.replace( '#', '' );
        }
    }
} );

Downcast:

editor.conversion.for( 'downcast' ).attributeToElement( {
    model: 'color',
    view: ( modelAttributeValue, viewWriter ) => viewWriter.createAttributeElement( 'span', {
        style: 'color:#' + modelAttributeValue
    } );
} );
0
ответ дан Mateusz Samsel 4 March 2019 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: