Bläddra i källkod

Added static method `createFromRanges` to model/selection.

Maciej Bukowski 8 år sedan
förälder
incheckning
205de3cde0

+ 15 - 0
packages/ckeditor5-engine/src/model/selection.js

@@ -620,6 +620,21 @@ export default class Selection {
 		return selection;
 	}
 
+	/**
+	 * Creates and returns an instance of `Selection` that is created 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 this();
+		selection.setRanges( ranges, isLastBackward );
+
+		return selection;
+	}
+
 	/**
 	 * Adds given range to internal {@link #_ranges ranges array}. Throws an error
 	 * if given range is intersecting with any range that is already stored in this selection.

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

@@ -796,6 +796,22 @@ 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;
 

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

@@ -26,22 +26,6 @@ describe( 'Selection', () => {
 		range3 = Range.createFromParentsAndOffsets( el, 12, el, 14 );
 	} );
 
-	describe( 'createFromRanges', () => {
-		it( 'should be able to initialize selection with ranges', () => {
-			const ranges = [ range1, range2, range3 ];
-			const selection = Selection.createFromRanges( ranges );
-
-			expect( Array.from( selection.getRanges() ) ).to.deep.equal( ranges );
-		} );
-
-		it( 'should be able to initialize selection with ranges and isLastBackward flag', () => {
-			const ranges = [ range1, range2, range3 ];
-			const selection = Selection.createFromRanges( 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;
@@ -753,6 +737,22 @@ 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;