8
0
Просмотр исходного кода

Changed BuildModelConverter to use toElement instead of toStamp when converting from marker.

Szymon Kupś 8 лет назад
Родитель
Сommit
2b02a3db15

+ 28 - 21
packages/ckeditor5-engine/src/conversion/buildmodelconverter.js

@@ -242,6 +242,13 @@ class ModelConverterBuilder {
 				dispatcher.on( 'removeAttribute:' + this._from.key, unwrapItem( element ), { priority } );
 
 				dispatcher.on( 'selectionAttribute:' + this._from.key, convertSelectionAttribute( element ), { priority } );
+			} else { // From marker to element.
+				const priority = this._from.priority === null ? 'normal' : this._from.priority;
+
+				element = typeof element == 'string' ? new ViewUIElement( element ) : element;
+
+				dispatcher.on( 'addMarker:' + this._from.name, insertUIElement( element ), { priority } );
+				dispatcher.on( 'removeMarker:' + this._from.name, removeUIElement( element ), { priority } );
 			}
 		}
 	}
@@ -297,27 +304,27 @@ class ModelConverterBuilder {
 	 * @param {String|module:engine/view/uielement~UIElement|Function} element UIElement created by converter or
 	 * a function that returns view element.
 	 */
-	toStamp( element ) {
-		for ( const dispatcher of this._dispatchers ) {
-			if ( this._from.type != 'marker' ) {
-				/**
-				 * To-stamp conversion is supported only for model markers.
-				 *
-				 * @error build-model-converter-element-to-stamp
-				 */
-				throw new CKEditorError(
-					'build-model-converter-non-marker-to-stamp: To-stamp conversion is supported only from model markers.'
-				);
-			}
-
-			const priority = this._from.priority === null ? 'normal' : this._from.priority;
-
-			element = typeof element == 'string' ? new ViewUIElement( element ) : element;
-
-			dispatcher.on( 'addMarker:' + this._from.name, insertUIElement( element ), { priority } );
-			dispatcher.on( 'removeMarker:' + this._from.name, removeUIElement( element ), { priority } );
-		}
-	}
+	// toStamp( element ) {
+	// 	for ( const dispatcher of this._dispatchers ) {
+	// 		if ( this._from.type != 'marker' ) {
+	// 			/**
+	// 			 * To-stamp conversion is supported only for model markers.
+	// 			 *
+	// 			 * @error build-model-converter-element-to-stamp
+	// 			 */
+	// 			throw new CKEditorError(
+	// 				'build-model-converter-non-marker-to-stamp: To-stamp conversion is supported only from model markers.'
+	// 			);
+	// 		}
+    //
+	// 		const priority = this._from.priority === null ? 'normal' : this._from.priority;
+    //
+	// 		element = typeof element == 'string' ? new ViewUIElement( element ) : element;
+    //
+	// 		dispatcher.on( 'addMarker:' + this._from.name, insertUIElement( element ), { priority } );
+	// 		dispatcher.on( 'removeMarker:' + this._from.name, removeUIElement( element ), { priority } );
+	// 	}
+	// }
 
 	/**
 	 * Registers what view attribute will be created by converter. Keep in mind, that only model attribute to

+ 9 - 21
packages/ckeditor5-engine/tests/conversion/buildmodelconverter.js

@@ -450,7 +450,7 @@ describe( 'Model converter builder', () => {
 		} );
 	} );
 
-	describe( 'model marker to view stamp conversion', () => {
+	describe( 'model marker to view element conversion', () => {
 		let modelText, modelElement, range;
 
 		beforeEach( () => {
@@ -471,7 +471,7 @@ describe( 'Model converter builder', () => {
 			} );
 
 			it( 'using passed view element name', () => {
-				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toStamp( 'span' );
+				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toElement( 'span' );
 
 				dispatcher.convertMarker( 'addMarker', 'search', range );
 
@@ -484,7 +484,7 @@ describe( 'Model converter builder', () => {
 
 			it( 'using passed view element', () => {
 				const viewElement = new ViewUIElement( 'span', { class: 'search' } );
-				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toStamp( viewElement );
+				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toElement( viewElement );
 
 				dispatcher.convertMarker( 'addMarker', 'search', range );
 
@@ -496,7 +496,7 @@ describe( 'Model converter builder', () => {
 			} );
 
 			it( 'using passed creator function', () => {
-				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toStamp( data => {
+				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toElement( data => {
 					const className = 'search search-color-' + data.name.split( ':' )[ 1 ];
 
 					return new ViewUIElement( 'span', { class: className } );
@@ -518,7 +518,7 @@ describe( 'Model converter builder', () => {
 			} );
 
 			it( 'using passed view element name', () => {
-				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toStamp( 'span' );
+				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toElement( 'span' );
 
 				dispatcher.convertMarker( 'addMarker', 'search', range );
 
@@ -531,7 +531,7 @@ describe( 'Model converter builder', () => {
 
 			it( 'using passed view element', () => {
 				const viewElement = new ViewUIElement( 'span', { class: 'search' } );
-				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toStamp( viewElement );
+				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toElement( viewElement );
 
 				dispatcher.convertMarker( 'addMarker', 'search', range );
 
@@ -545,7 +545,7 @@ describe( 'Model converter builder', () => {
 			} );
 
 			it( 'using passed creator function', () => {
-				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toStamp( data => {
+				buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toElement( data => {
 					const className = 'search search-color-' + data.name.split( ':' )[ 1 ];
 
 					return new ViewUIElement( 'span', { class: className } );
@@ -566,8 +566,8 @@ describe( 'Model converter builder', () => {
 		it( 'should overwrite default priority', () => {
 			range = ModelRange.createFromParentsAndOffsets( modelElement, 2, modelElement, 2 );
 
-			buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toStamp( 'normal' );
-			buildModelConverter().for( dispatcher ).fromMarker( 'search' ).withPriority( 'high' ).toStamp( 'high' );
+			buildModelConverter().for( dispatcher ).fromMarker( 'search' ).toElement( 'normal' );
+			buildModelConverter().for( dispatcher ).fromMarker( 'search' ).withPriority( 'high' ).toElement( 'high' );
 
 			dispatcher.convertMarker( 'addMarker', 'search', range );
 
@@ -594,16 +594,4 @@ describe( 'Model converter builder', () => {
 			buildModelConverter().for( dispatcher ).fromElement( 'paragraph' ).toAttribute( 'paragraph', true );
 		} ).to.throw( CKEditorError, /^build-model-converter-non-attribute-to-attribute/ );
 	} );
-
-	it( 'should throw when trying to build model element to view stamp converter', () => {
-		expect( () => {
-			buildModelConverter().for( dispatcher ).fromElement( 'paragraph' ).toStamp( 'span' );
-		} ).to.throw( CKEditorError, /^build-model-converter-non-marker-to-stamp/ );
-	} );
-
-	it( 'should throw when trying to build model attribute to view stamp converter', () => {
-		expect( () => {
-			buildModelConverter().for( dispatcher ).fromAttribute( 'class' ).toStamp( 'span' );
-		} ).to.throw( CKEditorError, /^build-model-converter-non-marker-to-stamp/ );
-	} );
 } );