Browse Source

#396: Make register function of DeltaFactory static. Use only class object to register deserializer.

Maciej Gołaszewski 9 năm trước cách đây
mục cha
commit
092454766a

+ 3 - 3
packages/ckeditor5-engine/src/treemodel/delta/attributedelta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import Delta from './delta.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import { register } from '../batch.js';
 import AttributeOperation from '../operation/attributeoperation.js';
 import RootAttributeOperation from '../operation/rootattributeoperation.js';
@@ -216,6 +216,6 @@ function changeRange( batch, doc, attributeKey, attributeValue, range ) {
 	}
 }
 
-registerDeserializer( AttributeDelta.className, AttributeDelta );
+DeltaFactory.register( AttributeDelta );
 
-registerDeserializer( RootAttributeDelta.className, RootAttributeDelta );
+DeltaFactory.register( RootAttributeDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/delta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import clone from '../../../utils/lib/lodash/clone.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 
 /**
  * Base class for all deltas.
@@ -160,4 +160,4 @@ export default class Delta {
 	}
 }
 
-registerDeserializer( Delta.className, Delta );
+DeltaFactory.register( Delta );

+ 11 - 6
packages/ckeditor5-engine/src/treemodel/delta/deltafactory.js

@@ -41,9 +41,9 @@ export default class DeltaFactory {
 			);
 		}
 
-		let Constructor = deserializers.get( json.__className );
+		let Delta = deserializers.get( json.__className );
 
-		let delta = new Constructor();
+		let delta = new Delta();
 
 		for ( let operation of json.operations ) {
 			delta.addOperation( OperationFactory.fromJSON( operation, doc ) );
@@ -51,10 +51,15 @@ export default class DeltaFactory {
 
 		return delta;
 	}
+
+	/**
+	 * Registers a class for delta factory.
+	 *
+	 * @param {Function} Delta A delta class to register.
+	 */
+	static register( Delta ) {
+		deserializers.set( Delta.className, Delta );
+	}
 }
 
 const deserializers = new Map();
-
-export function registerDeserializer( className, constructor ) {
-	deserializers.set( className, constructor );
-}

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/insertdelta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import Delta from './delta.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import RemoveDelta from './removedelta.js';
 import { register } from '../batch.js';
 import InsertOperation from '../operation/insertoperation.js';
@@ -82,4 +82,4 @@ register( 'insert', function( position, nodes ) {
 	return this;
 } );
 
-registerDeserializer( InsertDelta.className, InsertDelta );
+DeltaFactory.register( InsertDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/mergedelta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import Delta from './delta.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import SplitDelta from './splitdelta.js';
 import { register } from '../batch.js';
 import Position from '../position.js';
@@ -109,4 +109,4 @@ register( 'merge', function( position ) {
 	return this;
 } );
 
-registerDeserializer( MergeDelta.className, MergeDelta );
+DeltaFactory.register( MergeDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/movedelta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import Delta from './delta.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import { register } from '../batch.js';
 import MoveOperation from '../operation/moveoperation.js';
 import Position from '../position.js';
@@ -114,4 +114,4 @@ register( 'move', function( nodeOrRange, targetPosition ) {
 	return this;
 } );
 
-registerDeserializer( MoveDelta.className, MoveDelta );
+DeltaFactory.register( MoveDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/removedelta.js

@@ -7,7 +7,7 @@
 
 import MoveDelta from './movedelta.js';
 import { register } from '../batch.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import RemoveOperation from '../operation/removeoperation.js';
 import Position from '../position.js';
 import Range from '../range.js';
@@ -59,4 +59,4 @@ register( 'remove', function( nodeOrRange ) {
 	return this;
 } );
 
-registerDeserializer( RemoveDelta.className, RemoveDelta );
+DeltaFactory.register( RemoveDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/renamedelta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import Delta from './delta.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import { register } from '../batch.js';
 import InsertOperation from '../operation/insertoperation.js';
 import RemoveOperation from '../operation/removeoperation.js';
@@ -69,4 +69,4 @@ register( 'rename', function( newName, element ) {
 	return this;
 } );
 
-registerDeserializer( RenameDelta.className, RenameDelta );
+DeltaFactory.register( RenameDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/splitdelta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import Delta from './delta.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import { register } from '../batch.js';
 import Position from '../position.js';
 import Element from '../element.js';
@@ -120,4 +120,4 @@ register( 'split', function( position ) {
 	return this;
 } );
 
-registerDeserializer( SplitDelta.className, SplitDelta );
+DeltaFactory.register( SplitDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/unwrapdelta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import Delta from './delta.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import WrapDelta from './wrapdelta.js';
 import { register } from '../batch.js';
 import Position from '../position.js';
@@ -94,4 +94,4 @@ register( 'unwrap', function( element ) {
 	return this;
 } );
 
-registerDeserializer( UnwrapDelta.className, UnwrapDelta );
+DeltaFactory.register( UnwrapDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/weakinsertdelta.js

@@ -7,7 +7,7 @@
 
 import InsertDelta from './insertdelta.js';
 import { register } from '../batch.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import InsertOperation from '../operation/insertoperation.js';
 import NodeList from '../nodelist.js';
 
@@ -63,4 +63,4 @@ register( 'weakInsert', function( position, nodes ) {
 	return this;
 } );
 
-registerDeserializer( WeakInsertDelta.className, WeakInsertDelta );
+DeltaFactory.register( WeakInsertDelta );

+ 2 - 2
packages/ckeditor5-engine/src/treemodel/delta/wrapdelta.js

@@ -6,7 +6,7 @@
 'use strict';
 
 import Delta from './delta.js';
-import { registerDeserializer } from './deltafactory.js';
+import DeltaFactory from './deltafactory.js';
 import UnwrapDelta from './unwrapdelta.js';
 import { register } from '../batch.js';
 import Position from '../position.js';
@@ -133,4 +133,4 @@ register( 'wrap', function( range, elementOrString ) {
 	return this;
 } );
 
-registerDeserializer( WrapDelta.className, WrapDelta );
+DeltaFactory.register( WrapDelta );

+ 2 - 2
packages/ckeditor5-engine/tests/treemodel/delta/delta.js

@@ -17,7 +17,7 @@ import NoOperation from '/ckeditor5/engine/treemodel/operation/nooperation.js';
 import ReinsertOperation from '/ckeditor5/engine/treemodel/operation/reinsertoperation.js';
 import RemoveOperation from '/ckeditor5/engine/treemodel/operation/removeoperation.js';
 import RootAttributeOperation from '/ckeditor5/engine/treemodel/operation/rootattributeoperation.js';
-import { registerDeserializer } from '/ckeditor5/engine/treemodel/delta/deltafactory.js';
+import DeltaFactory from '/ckeditor5/engine/treemodel/delta/deltafactory.js';
 import Document from '/ckeditor5/engine/treemodel/document.js';
 import Position from '/ckeditor5/engine/treemodel/position.js';
 import Range from '/ckeditor5/engine/treemodel/range.js';
@@ -124,7 +124,7 @@ describe( 'Delta', () => {
 		let delta, root, doc;
 
 		before( () => {
-			registerDeserializer( FooDelta.className, FooDelta );
+			DeltaFactory.register( FooDelta );
 		} );
 
 		beforeEach( () => {

+ 15 - 15
packages/ckeditor5-engine/tests/treemodel/delta/deltafactory.js

@@ -20,7 +20,7 @@ import RootAttributeOperation from '/ckeditor5/engine/treemodel/operation/rootat
 
 import CKEditorError from '/ckeditor5/utils/ckeditorerror.js';
 
-import { default as DeltaFactory, registerDeserializer } from '/ckeditor5/engine/treemodel/delta/deltafactory.js';
+import DeltaFactory from '/ckeditor5/engine/treemodel/delta/deltafactory.js';
 
 import Document from '/ckeditor5/engine/treemodel/document.js';
 import Position from '/ckeditor5/engine/treemodel/position.js';
@@ -39,22 +39,16 @@ class BarDelta extends Delta {
 	}
 }
 
-class FooBarDelta extends Delta {
-	static get className() {
-		return 'tets.delta.foobar';
-	}
-}
-
 describe( 'DeltaFactory', () => {
 	describe( 'fromJSON', () => {
 		let delta, root, doc;
 
 		before( () => {
-			registerDeserializer( FooBarDelta.className, FooDelta );
+			DeltaFactory.register( FooDelta );
 		} );
 
 		beforeEach( () => {
-			delta = new FooBarDelta();
+			delta = new FooDelta();
 
 			doc = new Document();
 			root = doc.createRoot( 'root' );
@@ -156,15 +150,21 @@ describe( 'DeltaFactory', () => {
 		} );
 	} );
 
-	describe( 'registerDeserializer', () => {
+	describe( 'register', () => {
 		it( 'should add delta deserializer', ( done ) => {
-			registerDeserializer( 'foo', deserializer );
+			class SomeDelta {
+				constructor() {
+					done();
+				}
+
+				static get className() {
+					return 'foo';
+				}
+			}
 
-			DeltaFactory.fromJSON( { __className: 'foo', operations: [] } );
+			DeltaFactory.register( SomeDelta );
 
-			function deserializer() {
-				done();
-			}
+			DeltaFactory.fromJSON( { __className: 'foo', operations: [] } );
 		} );
 	} );
 } );