Преглед на файлове

Aligned engine code with new Batch API.

Oskar Wróbel преди 8 години
родител
ревизия
7f705b4898

+ 3 - 1
packages/ckeditor5-engine/src/model/document.js

@@ -37,7 +37,9 @@ const graveyardName = '$graveyard';
  * All changes in the document are done by {@link module:engine/model/operation/operation~Operation operations}. To create operations in
  * a simple way, use the {@link module:engine/model/batch~Batch} API, for example:
  *
- *		doc.batch().insert( position, nodes ).split( otherPosition );
+ *		const batch = doc.batch();
+ *		batch.insert( node, position );
+ *		batch.split( otherPosition );
  *
  * @see module:engine/model/document~Document#batch
  * @mixes module:utils/emittermixin~EmitterMixin

+ 3 - 3
packages/ckeditor5-engine/tests/controller/editingcontroller.js

@@ -159,7 +159,7 @@ describe( 'EditingController', () => {
 			)._children );
 
 			model.enqueueChanges( () => {
-				model.batch().insert( ModelPosition.createAt( model.getRoot(), 0 ), modelData );
+				model.batch().insert( modelData, model.getRoot() );
 				model.selection.addRange( ModelRange.createFromParentsAndOffsets(
 					modelRoot.getChild( 0 ), 1, modelRoot.getChild( 0 ), 1 ) );
 			} );
@@ -375,7 +375,7 @@ describe( 'EditingController', () => {
 
 		it( 'should forward add marker event if content is moved into a marker range', () => {
 			model.enqueueChanges( () => {
-				model.batch().insert( ModelPosition.createAt( model.getRoot(), 'end' ), new ModelElement( 'paragraph' ) );
+				model.batch().appendElement( 'paragraph', model.getRoot() );
 			} );
 
 			const markerRange = ModelRange.createFromParentsAndOffsets( modelRoot, 0, modelRoot, 3 );
@@ -411,7 +411,7 @@ describe( 'EditingController', () => {
 
 			model.enqueueChanges( () => {
 				const modelData = parse( '<paragraph>foo</paragraph>', model.schema ).getChild( 0 );
-				model.batch().insert( ModelPosition.createAt( model.getRoot(), 0 ), modelData );
+				model.batch().insert( modelData, model.getRoot() );
 			} );
 
 			expect( spy.called ).to.be.false;

+ 23 - 15
packages/ckeditor5-engine/tests/conversion/modelconversiondispatcher.js

@@ -63,8 +63,7 @@ describe( 'ModelConversionDispatcher', () => {
 			dispatcher.on( 'insert:image', cbInsertImage );
 			dispatcher.on( 'addAttribute:key:$text', cbAddAttribute );
 
-			const insertedText = new ModelText( 'foo', { key: 'value' } );
-			doc.batch().insert( ModelPosition.createFromParentAndOffset( root, 0 ), insertedText );
+			doc.batch().insertText( 'foo', { key: 'value' }, root );
 
 			expect( cbInsertText.called ).to.be.true;
 			expect( cbAddAttribute.called ).to.be.true;
@@ -129,18 +128,21 @@ describe( 'ModelConversionDispatcher', () => {
 		it( 'should fire changeAttribute callbacks for change attribute change', () => {
 			const cbChangeText = sinon.spy();
 			const cbChangeImage = sinon.spy();
+			const batch = doc.batch();
 
 			dispatcher.on( 'changeAttribute:key:$text', cbChangeText );
 			dispatcher.on( 'changeAttribute:key:image', cbChangeImage );
 
-			doc.batch().setAttribute( image, 'key', 'value' ).setAttribute( image, 'key', 'newValue' );
+			batch.setAttribute( image, 'key', 'value' );
+			batch.setAttribute( image, 'key', 'newValue' );
 
 			// Callback for adding attribute on text not called.
 			expect( cbChangeText.called ).to.be.false;
 			expect( cbChangeImage.calledOnce ).to.be.true;
 
 			const range = ModelRange.createFromParentsAndOffsets( root, 3, root, 4 );
-			doc.batch().setAttribute( range, 'key', 'value' ).setAttribute( range, 'key', 'newValue' );
+			batch.setAttribute( range, 'key', 'value' );
+			batch.setAttribute( range, 'key', 'newValue' );
 
 			expect( cbChangeText.calledOnce ).to.be.true;
 			// Callback for adding attribute on image not called this time.
@@ -150,18 +152,21 @@ describe( 'ModelConversionDispatcher', () => {
 		it( 'should fire removeAttribute callbacks for remove attribute change', () => {
 			const cbRemoveText = sinon.spy();
 			const cbRemoveImage = sinon.spy();
+			const batch = doc.batch();
 
 			dispatcher.on( 'removeAttribute:key:$text', cbRemoveText );
 			dispatcher.on( 'removeAttribute:key:image', cbRemoveImage );
 
-			doc.batch().setAttribute( image, 'key', 'value' ).removeAttribute( image, 'key' );
+			batch.setAttribute( image, 'key', 'value' );
+			batch.removeAttribute( image, 'key' );
 
 			// Callback for adding attribute on text not called.
 			expect( cbRemoveText.called ).to.be.false;
 			expect( cbRemoveImage.calledOnce ).to.be.true;
 
 			const range = ModelRange.createFromParentsAndOffsets( root, 3, root, 4 );
-			doc.batch().setAttribute( range, 'key', 'value' ).removeAttribute( range, 'key' );
+			batch.setAttribute( range, 'key', 'value' );
+			batch.removeAttribute( range, 'key' );
 
 			expect( cbRemoveText.calledOnce ).to.be.true;
 			// Callback for adding attribute on image not called this time.
@@ -616,9 +621,10 @@ describe( 'ModelConversionDispatcher', () => {
 
 		it( 'should prepare correct list of consumable values', () => {
 			doc.enqueueChanges( () => {
-				doc.batch()
-					.setAttribute( ModelRange.createIn( root ), 'bold', true )
-					.setAttribute( ModelRange.createFromParentsAndOffsets( root, 4, root, 5 ), 'italic', true );
+				const batch = doc.batch();
+
+				batch.setAttribute( ModelRange.createIn( root ), 'bold', true );
+				batch.setAttribute( ModelRange.createFromParentsAndOffsets( root, 4, root, 5 ), 'italic', true );
 			} );
 
 			dispatcher.on( 'selection', ( evt, data, consumable ) => {
@@ -634,9 +640,10 @@ describe( 'ModelConversionDispatcher', () => {
 			sinon.spy( dispatcher, 'fire' );
 
 			doc.enqueueChanges( () => {
-				doc.batch()
-					.setAttribute( ModelRange.createIn( root ), 'bold', true )
-					.setAttribute( ModelRange.createFromParentsAndOffsets( root, 4, root, 5 ), 'italic', true );
+				const batch = doc.batch();
+
+				batch.setAttribute( ModelRange.createIn( root ), 'bold', true );
+				batch.setAttribute( ModelRange.createFromParentsAndOffsets( root, 4, root, 5 ), 'italic', true );
 			} );
 
 			dispatcher.convertSelection( doc.selection, [] );
@@ -653,9 +660,10 @@ describe( 'ModelConversionDispatcher', () => {
 			} );
 
 			doc.enqueueChanges( () => {
-				doc.batch()
-					.setAttribute( ModelRange.createIn( root ), 'bold', true )
-					.setAttribute( ModelRange.createFromParentsAndOffsets( root, 4, root, 5 ), 'italic', true );
+				const batch = doc.batch();
+
+				batch.setAttribute( ModelRange.createIn( root ), 'bold', true );
+				batch.setAttribute( ModelRange.createFromParentsAndOffsets( root, 4, root, 5 ), 'italic', true );
 			} );
 
 			dispatcher.convertSelection( doc.selection, [] );

+ 5 - 5
packages/ckeditor5-engine/tests/model/documentselection.js

@@ -1012,7 +1012,7 @@ describe( 'DocumentSelection', () => {
 					batchTypes.set( batch, batch.type );
 				} );
 
-				doc.batch().insert( rangeInEmptyP.start, 'x' );
+				doc.batch().insertText( 'x', rangeInEmptyP.start );
 
 				expect( emptyP.hasAttribute( fooStoreAttrKey ) ).to.be.false;
 				expect( emptyP.hasAttribute( abcStoreAttrKey ) ).to.be.false;
@@ -1024,7 +1024,7 @@ describe( 'DocumentSelection', () => {
 				selection.setRanges( [ rangeInEmptyP ] );
 				selection.setAttribute( 'foo', 'bar' );
 
-				doc.batch().move( fullP.getChild( 0 ), rangeInEmptyP.start );
+				doc.batch().move( Range.createOn( fullP.getChild( 0 ) ), rangeInEmptyP.start );
 
 				expect( emptyP.hasAttribute( fooStoreAttrKey ) ).to.be.false;
 			} );
@@ -1048,7 +1048,7 @@ describe( 'DocumentSelection', () => {
 
 				selection.setRanges( [ rangeInFullP ] );
 
-				doc.batch().insert( rangeInEmptyP.start, 'x' );
+				doc.batch().insertText( 'x', rangeInEmptyP.start );
 
 				expect( emptyP.hasAttribute( fooStoreAttrKey ) ).to.be.false;
 			} );
@@ -1076,7 +1076,7 @@ describe( 'DocumentSelection', () => {
 				selection.setAttribute( 'foo', 'bar' );
 
 				doc.enqueueChanges( () => {
-					doc.batch().insert( rangeInEmptyP.start, 'x' );
+					doc.batch().insertText( 'x', rangeInEmptyP.start );
 
 					// `emptyP` still has the attribute, because attribute clearing is in enqueued block.
 					expect( emptyP.hasAttribute( fooStoreAttrKey ) ).to.be.true;
@@ -1109,7 +1109,7 @@ describe( 'DocumentSelection', () => {
 
 				sinon.spy( doc, 'enqueueChanges' );
 
-				doc.batch( 'transparent' ).insert( rangeInEmptyP.start, 'x' );
+				doc.batch( 'transparent' ).insertText( 'x', rangeInEmptyP.start );
 
 				expect( doc.enqueueChanges.called ).to.be.false;
 				expect( emptyP.getAttribute( fooStoreAttrKey ) ).to.equal( 'bar' );

+ 1 - 1
packages/ckeditor5-engine/tests/model/markercollection.js

@@ -225,7 +225,7 @@ describe( 'Marker', () => {
 		expect( marker.getEnd().isEqual( range.end ) ).to.be.true;
 
 		doc.enqueueChanges( () => {
-			doc.batch().insert( Position.createAt( root, 0 ), 'abc' );
+			doc.batch().insertText( 'abc', root );
 		} );
 
 		const updatedRange = Range.createFromParentsAndOffsets( root, 4, root, 5 );