浏览代码

Moved createFromRanges method to the constructor optional parameters.

Maciej Bukowski 8 年之前
父节点
当前提交
f9347cce59

+ 10 - 2
packages/ckeditor5-engine/src/model/selection.js

@@ -23,9 +23,13 @@ import mapsEqual from '@ckeditor/ckeditor5-utils/src/mapsequal';
  */
 export default class Selection {
 	/**
-	 * Creates an empty selection.
+	 * Creates new selection instance.
+	 *
+	 * @param {Iterable.<module:engine/view/range~Range>} [ranges] An optional iterable object of ranges to set.
+	 * @param {Boolean} [isLastBackward] An optional flag describing if last added range was selected forward - from start to end
+	 * (`false`) or backward - from end to start (`true`). Defaults to `false`.
 	 */
-	constructor() {
+	constructor( ranges, isLastBackward ) {
 		/**
 		 * Specifies whether the last added range was added as a backward or forward range.
 		 *
@@ -49,6 +53,10 @@ export default class Selection {
 		 * @member {Map} module:engine/model/selection~Selection#_attrs
 		 */
 		this._attrs = new Map();
+
+		if ( ranges ) {
+			this.setRanges( ranges, isLastBackward );
+		}
 	}
 
 	/**

+ 10 - 17
packages/ckeditor5-engine/src/view/selection.js

@@ -33,8 +33,12 @@ import Element from './element';
 export default class Selection {
 	/**
 	 * Creates new selection instance.
+	 *
+	 * @param {Iterable.<module:engine/view/range~Range>} [ranges] An optional array of ranges to set.
+	 * @param {Boolean} [isLastBackward] An optional flag describing if last added range was selected forward - from start to end
+	 * (`false`) or backward - from end to start (`true`). Defaults to `false`.
 	 */
-	constructor() {
+	constructor( ranges, isLastBackward ) {
 		/**
 		 * Stores all ranges that are selected.
 		 *
@@ -66,6 +70,10 @@ export default class Selection {
 		 * @member {String}
 		 */
 		this._fakeSelectionLabel = '';
+
+		if ( ranges ) {
+			this.setRanges( ranges, isLastBackward );
+		}
 	}
 
 	/**
@@ -348,7 +356,7 @@ export default class Selection {
 	 * Accepts a flag describing in which way the selection is made (see {@link #addRange addRange}).
 	 *
 	 * @fires change
-	 * @param {Array.<module:engine/view/range~Range>} newRanges Array of ranges to set.
+	 * @param {Iterable.<module:engine/view/range~Range>} newRanges Iterable object of ranges to set.
 	 * @param {Boolean} [isLastBackward] Flag describing if last added range was selected forward - from start to end
 	 * (`false`) or backward - from end to start (`true`). Defaults to `false`.
 	 */
@@ -497,21 +505,6 @@ export default class Selection {
 	}
 
 	/**
-	 * Creates and returns an instance of `Selection` from the given ranges.
-	 * Accepts a flag describing in which way the selection is made (see {@link #addRange addRange}).
-	 *
-	 * @param {Array.<module:engine/view/range~Range>} ranges Array of ranges to set.
-	 * @param {Boolean} [isLastBackward] Flag describing if last added range was selected forward - from start to end
-	 * (`false`) or backward - from end to start (`true`). Defaults to `false`.
-	 */
-	static createFromRanges( ranges, isLastBackward ) {
-		const selection = new Selection();
-		selection.setRanges( ranges, isLastBackward );
-
-		return selection;
-	}
-
-	/**
 	 * Adds range to selection - creates copy of given range so it can be safely used and modified.
 	 *
 	 * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-selection-range-intersects` if added range intersects

+ 22 - 16
packages/ckeditor5-engine/tests/model/selection.js

@@ -48,6 +48,28 @@ describe( 'Selection', () => {
 		liveRange.detach();
 	} );
 
+	describe( 'constructor()', () => {
+		it( 'should be able to create an empty selection', () => {
+			const selection = new Selection();
+
+			expect( Array.from( selection.getRanges() ) ).to.deep.equal( [] );
+		} );
+
+		it( 'should be able to create a selection from the given ranges', () => {
+			const ranges = [ range1, range2, range3 ];
+			const selection = new Selection( ranges );
+
+			expect( Array.from( selection.getRanges() ) ).to.deep.equal( ranges );
+		} );
+
+		it( 'should be able to create a selection from the given ranges and isLastBackward flag', () => {
+			const ranges = [ range1, range2, range3 ];
+			const selection = new Selection( ranges, true );
+
+			expect( selection.isBackward ).to.be.true;
+		} );
+	} );
+
 	describe( 'isCollapsed', () => {
 		it( 'should return false for empty selection', () => {
 			expect( selection.isCollapsed ).to.be.false;
@@ -796,22 +818,6 @@ describe( 'Selection', () => {
 		} );
 	} );
 
-	describe( 'createFromRanges()', () => {
-		it( 'should create a Selection instance from given ranges', () => {
-			const ranges = [ range1, range2, range3 ];
-			const selection = Selection.createFromRanges( ranges );
-
-			expect( Array.from( selection.getRanges() ) ).to.deep.equal( ranges );
-		} );
-
-		it( 'should create a Selection instance from given ranges and isLastBackward flag', () => {
-			const ranges = [ range1, range2, range3 ];
-			const selection = Selection.createFromRanges( ranges, true );
-
-			expect( selection.isBackward ).to.be.true;
-		} );
-	} );
-
 	describe( 'getSelectedElement()', () => {
 		let schema;
 

+ 22 - 16
packages/ckeditor5-engine/tests/view/selection.js

@@ -26,6 +26,28 @@ describe( 'Selection', () => {
 		range3 = Range.createFromParentsAndOffsets( el, 12, el, 14 );
 	} );
 
+	describe( 'constructor()', () => {
+		it( 'should be able to create an empty selection', () => {
+			const selection = new Selection();
+
+			expect( Array.from( selection.getRanges() ) ).to.deep.equal( [] );
+		} );
+
+		it( 'should be able to create a selection from the given ranges', () => {
+			const ranges = [ range1, range2, range3 ];
+			const selection = new Selection( ranges );
+
+			expect( Array.from( selection.getRanges() ) ).to.deep.equal( ranges );
+		} );
+
+		it( 'should be able to create a selection from the given ranges and isLastBackward flag', () => {
+			const ranges = [ range1, range2, range3 ];
+			const selection = new Selection( ranges, true );
+
+			expect( selection.isBackward ).to.be.true;
+		} );
+	} );
+
 	describe( 'anchor', () => {
 		it( 'should return null if no ranges in selection', () => {
 			expect( selection.anchor ).to.be.null;
@@ -737,22 +759,6 @@ describe( 'Selection', () => {
 		} );
 	} );
 
-	describe( 'createFromRanges()', () => {
-		it( 'should create a Selection instance from given ranges', () => {
-			const ranges = [ range1, range2, range3 ];
-			const selection = Selection.createFromRanges( ranges );
-
-			expect( Array.from( selection.getRanges() ) ).to.deep.equal( ranges );
-		} );
-
-		it( 'should create a Selection instance from given ranges and isLastBackward flag', () => {
-			const ranges = [ range1, range2, range3 ];
-			const selection = Selection.createFromRanges( ranges, true );
-
-			expect( selection.isBackward ).to.be.true;
-		} );
-	} );
-
 	describe( 'isFake', () => {
 		it( 'should be false for newly created instance', () => {
 			expect( selection.isFake ).to.be.false;