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

Merge pull request #834 from ckeditor/t/830

Other: `view.Range.enlarge()` and `view.Range.shrink()` should not pass the container limit because the `view.Writer` expects that the whole range is in the same container. Closes #830.
Szymon Cofalik 8 лет назад
Родитель
Сommit
9b48a0b33f
2 измененных файлов с 8 добавлено и 25 удалено
  1. 5 22
      packages/ckeditor5-engine/src/view/range.js
  2. 3 3
      packages/ckeditor5-engine/tests/view/range.js

+ 5 - 22
packages/ckeditor5-engine/src/view/range.js

@@ -98,8 +98,8 @@ export default class Range {
 	 * @returns {module:engine/view/range~Range} Enlarged range.
 	 * @returns {module:engine/view/range~Range} Enlarged range.
 	 */
 	 */
 	getEnlarged() {
 	getEnlarged() {
-		const start = this.start.getLastMatchingPosition( enlargeShrinkStartSkip, { direction: 'backward' } );
-		const end = this.end.getLastMatchingPosition( enlargeShrinkEndSkip );
+		const start = this.start.getLastMatchingPosition( enlargeShrinkSkip, { direction: 'backward' } );
+		const end = this.end.getLastMatchingPosition( enlargeShrinkSkip );
 
 
 		return new Range( start, end );
 		return new Range( start, end );
 	}
 	}
@@ -121,8 +121,8 @@ export default class Range {
 	 * @returns {module:engine/view/range~Range} Shrink range.
 	 * @returns {module:engine/view/range~Range} Shrink range.
 	 */
 	 */
 	getTrimmed() {
 	getTrimmed() {
-		let start = this.start.getLastMatchingPosition( enlargeShrinkStartSkip );
-		let end = this.end.getLastMatchingPosition( enlargeShrinkEndSkip, { direction: 'backward' } );
+		let start = this.start.getLastMatchingPosition( enlargeShrinkSkip );
+		let end = this.end.getLastMatchingPosition( enlargeShrinkSkip, { direction: 'backward' } );
 		let nodeAfterStart = start.nodeAfter;
 		let nodeAfterStart = start.nodeAfter;
 		let nodeBeforeEnd = end.nodeBefore;
 		let nodeBeforeEnd = end.nodeBefore;
 
 
@@ -408,27 +408,10 @@ export default class Range {
 }
 }
 
 
 // Function used by getEnlagred and getShrinked methods.
 // Function used by getEnlagred and getShrinked methods.
-function enlargeShrinkStartSkip( value ) {
+function enlargeShrinkSkip( value ) {
 	if ( value.item.is( 'attributeElement' ) || value.item.is( 'uiElement' ) ) {
 	if ( value.item.is( 'attributeElement' ) || value.item.is( 'uiElement' ) ) {
 		return true;
 		return true;
 	}
 	}
 
 
-	if ( value.item.is( 'containerElement' ) && value.type == 'elementStart' ) {
-		return true;
-	}
-
-	return false;
-}
-
-// Function used by getEnlagred and getShrinked methods.
-function enlargeShrinkEndSkip( value ) {
-	if ( value.item.is( 'attributeElement' ) || value.item.is( 'uiElement' ) ) {
-		return true;
-	}
-
-	if ( value.item.is( 'containerElement' ) && value.type == 'elementEnd' ) {
-		return true;
-	}
-
 	return false;
 	return false;
 }
 }

+ 3 - 3
packages/ckeditor5-engine/tests/view/range.js

@@ -89,7 +89,7 @@ describe( 'Range', () => {
 	describe( 'getEnlarged', () => {
 	describe( 'getEnlarged', () => {
 		it( 'case 1', () => {
 		it( 'case 1', () => {
 			expect( enlarge( '<p>f<b>{oo}</b></p><p>bar</p>' ) )
 			expect( enlarge( '<p>f<b>{oo}</b></p><p>bar</p>' ) )
-				.to.equal( '<p>f[<b>oo</b></p>]<p>bar</p>' );
+				.to.equal( '<p>f[<b>oo</b>]</p><p>bar</p>' );
 		} );
 		} );
 
 
 		it( 'case 2', () => {
 		it( 'case 2', () => {
@@ -114,7 +114,7 @@ describe( 'Range', () => {
 
 
 		it( 'case6', () => {
 		it( 'case6', () => {
 			expect( enlarge( '<p>foo</p><p>[bar]</p><p>bom</p>' ) )
 			expect( enlarge( '<p>foo</p><p>[bar]</p><p>bom</p>' ) )
-				.to.equal( '<p>foo</p>[<p>bar</p>]<p>bom</p>' );
+				.to.equal( '<p>foo</p><p>[bar]</p><p>bom</p>' );
 		} );
 		} );
 
 
 		function enlarge( data ) {
 		function enlarge( data ) {
@@ -138,7 +138,7 @@ describe( 'Range', () => {
 
 
 	describe( 'getTrimmed', () => {
 	describe( 'getTrimmed', () => {
 		it( 'case 1', () => {
 		it( 'case 1', () => {
-			expect( trim( '<p>f[<b>oo</b></p>]<p>bar</p>' ) )
+			expect( trim( '<p>f[<b>oo</b>]</p><p>bar</p>' ) )
 				.to.equal( '<p>f<b>{oo}</b></p><p>bar</p>' );
 				.to.equal( '<p>f<b>{oo}</b></p><p>bar</p>' );
 		} );
 		} );