jenkins-bot has submitted this change and it was merged. Change subject: Converter: Remove internal during the main loop ......................................................................
Converter: Remove internal during the main loop It was placed in a separate loop so as not to affect whitespace calculations at the end of the document, so fix that calculation to include the next node being the internal list. Also assume the internalList is the last thing in the document. We were over cautious about this when IL was introduced, but we make this assumption is so many other places. Change-Id: Ice6b16722b234b63548be72a8e1017ef24d3cc8f --- M src/dm/ve.dm.Converter.js 1 file changed, 7 insertions(+), 31 deletions(-) Approvals: Catrope: Looks good to me, approved jenkins-bot: Verified diff --git a/src/dm/ve.dm.Converter.js b/src/dm/ve.dm.Converter.js index 23acaa7..a94ad72 100644 --- a/src/dm/ve.dm.Converter.js +++ b/src/dm/ve.dm.Converter.js @@ -1210,35 +1210,6 @@ return dataSlice; } - function removeInternalNodes() { - var dataCopy, endOffset; - // See if there is an internalList in the data, and if there is one, remove it - // Removing it here prevents unwanted interactions with whitespace preservation - for ( i = 0; i < dataLen; i++ ) { - if ( - data[ i ].type && data[ i ].type.charAt( 0 ) !== '/' && - ve.dm.nodeFactory.lookup( data[ i ].type ) && - ve.dm.nodeFactory.isNodeInternal( data[ i ].type ) - ) { - // Copy data if we haven't already done so - if ( !dataCopy ) { - dataCopy = data.slice(); - } - endOffset = findEndOfNode( i ); - // Remove this node's data from dataCopy - dataCopy.splice( i - ( dataLen - dataCopy.length ), endOffset - i ); - // Move i such that it will be at endOffset in the next iteration - i = endOffset - 1; - } - } - if ( dataCopy ) { - data = dataCopy; - dataLen = data.length; - } - } - - removeInternalNodes(); - for ( i = 0; i < dataLen; i++ ) { if ( typeof data[ i ] === 'string' ) { // Text @@ -1431,8 +1402,10 @@ if ( domElement.childNodes.length === 0 && ( // then check that we are the last child // before unwrapping (and therefore destroying) - i === data.length - 1 || - data[ i + 1 ].type.charAt( 0 ) === '/' + data[ i + 1 ] === undefined || + data[ i + 1 ].type.charAt( 0 ) === '/' || + // Document ends when we encounter the internal list + ( data[ i + 1 ].type && this.nodeFactory.isNodeInternal( data[ i + 1 ].type ) ) ) ) { doUnwrap = true; @@ -1491,6 +1464,9 @@ // Create node from data if ( this.metaItemFactory.lookup( data[ i ].type ) ) { isContentNode = canContainContentStack[ canContainContentStack.length - 1 ]; + } else if ( this.nodeFactory.isNodeInternal( data[ i ].type ) ) { + // Reached the internal list, finish + break; } else { canContainContentStack.push( // if the last item was true then this item must inherit it -- To view, visit https://gerrit.wikimedia.org/r/320005 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ice6b16722b234b63548be72a8e1017ef24d3cc8f Gerrit-PatchSet: 5 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: Esanders <esand...@wikimedia.org> Gerrit-Reviewer: Catrope <r...@wikimedia.org> Gerrit-Reviewer: DLynch <dly...@wikimedia.org> Gerrit-Reviewer: Divec <da...@troi.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits