[MediaWiki-commits] [Gerrit] VisualEditor/VisualEditor[master]: DiffElement: Fix insert/delete-to-end loops
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/373706 ) Change subject: DiffElement: Fix insert/delete-to-end loops .. DiffElement: Fix insert/delete-to-end loops Bug: T173860 Change-Id: Ic1c2d997e3295d0cc4d5445c2ef10daa0e9abd54 --- M src/ui/elements/ve.ui.DiffElement.js M tests/ui/ve.ui.DiffElement.test.js 2 files changed, 37 insertions(+), 7 deletions(-) Approvals: Tchanders: Looks good to me, approved jenkins-bot: Verified diff --git a/src/ui/elements/ve.ui.DiffElement.js b/src/ui/elements/ve.ui.DiffElement.js index 3a877e7..ea6a12e 100644 --- a/src/ui/elements/ve.ui.DiffElement.js +++ b/src/ui/elements/ve.ui.DiffElement.js @@ -194,7 +194,7 @@ * Render the diff */ ve.ui.DiffElement.prototype.renderDiff = function () { - var i, j, k, ilen, jlen, klen, nodes, move, documentSpacerNode, internalListSpacerNode, li, groupName, + var i, j, ilen, jlen, move, documentSpacerNode, internalListSpacerNode, li, groupName, noChanges, group, headingNode, names, category, internalListGroup, internalListDiffDiv, anyInternalListChanges, internalListItem, documentNode = this.$document[ 0 ], @@ -306,17 +306,17 @@ if ( this.oldDocChildren[ i ] === undefined ) { // Everything else in the new doc is an insert - nodes = this.newDocChildren.slice( j ); - for ( k = 0, klen = nodes.length; k < klen; k++ ) { - diffQueue.push( [ 'getNodeElements', nodes[ k ], 'insert' ] ); + while ( j < this.newDocChildren.length ) { + diffQueue.push( [ 'getNodeElements', this.newDocChildren[ j ], 'insert' ] ); + j++; } } else if ( this.newDocChildren[ j ] === undefined ) { // Everything else in the old doc is a remove - nodes = this.oldDocChildren.slice( i ); - for ( k = 0, klen = nodes.length; k < klen; k++ ) { - diffQueue.push( [ 'getNodeElements', nodes[ k ], 'remove' ] ); + while ( i < this.oldDocChildren.length ) { + diffQueue.push( [ 'getNodeElements', this.oldDocChildren[ i ], 'remove' ] ); + i++; } } else if ( this.remove.indexOf( i ) !== -1 ) { diff --git a/tests/ui/ve.ui.DiffElement.test.js b/tests/ui/ve.ui.DiffElement.test.js index befa3d3..d3e66dc 100644 --- a/tests/ui/ve.ui.DiffElement.test.js +++ b/tests/ui/ve.ui.DiffElement.test.js @@ -191,6 +191,36 @@ '' }, { + msg: 'Multi-node insert', + oldDoc: '', + newDoc: 'foobar', + expected: + '' + + '' + + '' + + '' + + 'foo' + + '' + + '' + + 'bar' + + '' + }, + { + msg: 'Multi-node remove', + oldDoc: 'foobar', + newDoc: '', + expected: + '' + + 'foo' + + '' + + '' + + 'bar' + + '' + + '' + + '' + + '' + }, + { msg: 'Inline node inserted', oldDoc: 'foo bar baz quux', newDoc: 'foo bar baz quux', -- To view, visit https://gerrit.wikimedia.org/r/373706 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic1c2d997e3295d0cc4d5445c2ef10daa0e9abd54 Gerrit-PatchSet: 1 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: EsandersGerrit-Reviewer: Tchanders Gerrit-Reviewer: jenkins-bot <> ___ MediaWiki-commits mailing list
[MediaWiki-commits] [Gerrit] VisualEditor/VisualEditor[master]: DiffElement: Fix insert/delete-to-end loops
Esanders has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/373706 ) Change subject: DiffElement: Fix insert/delete-to-end loops .. DiffElement: Fix insert/delete-to-end loops Bug: T173860 Change-Id: Ic1c2d997e3295d0cc4d5445c2ef10daa0e9abd54 --- M src/ui/elements/ve.ui.DiffElement.js M tests/ui/ve.ui.DiffElement.test.js 2 files changed, 37 insertions(+), 7 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor refs/changes/06/373706/1 diff --git a/src/ui/elements/ve.ui.DiffElement.js b/src/ui/elements/ve.ui.DiffElement.js index 3a877e7..ea6a12e 100644 --- a/src/ui/elements/ve.ui.DiffElement.js +++ b/src/ui/elements/ve.ui.DiffElement.js @@ -194,7 +194,7 @@ * Render the diff */ ve.ui.DiffElement.prototype.renderDiff = function () { - var i, j, k, ilen, jlen, klen, nodes, move, documentSpacerNode, internalListSpacerNode, li, groupName, + var i, j, ilen, jlen, move, documentSpacerNode, internalListSpacerNode, li, groupName, noChanges, group, headingNode, names, category, internalListGroup, internalListDiffDiv, anyInternalListChanges, internalListItem, documentNode = this.$document[ 0 ], @@ -306,17 +306,17 @@ if ( this.oldDocChildren[ i ] === undefined ) { // Everything else in the new doc is an insert - nodes = this.newDocChildren.slice( j ); - for ( k = 0, klen = nodes.length; k < klen; k++ ) { - diffQueue.push( [ 'getNodeElements', nodes[ k ], 'insert' ] ); + while ( j < this.newDocChildren.length ) { + diffQueue.push( [ 'getNodeElements', this.newDocChildren[ j ], 'insert' ] ); + j++; } } else if ( this.newDocChildren[ j ] === undefined ) { // Everything else in the old doc is a remove - nodes = this.oldDocChildren.slice( i ); - for ( k = 0, klen = nodes.length; k < klen; k++ ) { - diffQueue.push( [ 'getNodeElements', nodes[ k ], 'remove' ] ); + while ( i < this.oldDocChildren.length ) { + diffQueue.push( [ 'getNodeElements', this.oldDocChildren[ i ], 'remove' ] ); + i++; } } else if ( this.remove.indexOf( i ) !== -1 ) { diff --git a/tests/ui/ve.ui.DiffElement.test.js b/tests/ui/ve.ui.DiffElement.test.js index befa3d3..d3e66dc 100644 --- a/tests/ui/ve.ui.DiffElement.test.js +++ b/tests/ui/ve.ui.DiffElement.test.js @@ -191,6 +191,36 @@ '' }, { + msg: 'Multi-node insert', + oldDoc: '', + newDoc: 'foobar', + expected: + '' + + '' + + '' + + '' + + 'foo' + + '' + + '' + + 'bar' + + '' + }, + { + msg: 'Multi-node remove', + oldDoc: 'foobar', + newDoc: '', + expected: + '' + + 'foo' + + '' + + '' + + 'bar' + + '' + + '' + + '' + + '' + }, + { msg: 'Inline node inserted', oldDoc: 'foo bar baz quux', newDoc: 'foo bar baz quux', -- To view, visit https://gerrit.wikimedia.org/r/373706 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic1c2d997e3295d0cc4d5445c2ef10daa0e9abd54 Gerrit-PatchSet: 1 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: Esanders___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits