[MediaWiki-commits] [Gerrit] Store inner whitespace of the body and compare it on conversion - change (mediawiki...VisualEditor)
jenkins-bot has submitted this change and it was merged. Change subject: Store inner whitespace of the body and compare it on conversion .. Store inner whitespace of the body and compare it on conversion Calculate and store the two inner whitespace values of the body in the dm.Document. When converting back, make sure the first/last nodes pre/post outer whitespace matches the inner left/right whitespace of the body. Bug: 54964 Change-Id: I45f1ffd63669f25a6cae878400bfe21719ed58ee --- M modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js M modules/ve/dm/ve.dm.Converter.js M modules/ve/dm/ve.dm.Document.js M modules/ve/test/dm/ve.dm.example.js M modules/ve/test/ve.test.utils.js 5 files changed, 89 insertions(+), 31 deletions(-) Approvals: Catrope: Looks good to me, approved jenkins-bot: Verified diff --git a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js index 0a59927..b775daa 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js @@ -736,11 +736,11 @@ if ( this.pageExists ) { // Has no callback, handled via target.onShowChanges this.showChanges( - ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList() ) + ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList(), doc.getInnerWhitespace() ) ); } else { this.serialize( - ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList() ), + ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList(), doc.getInnerWhitespace() ), ve.bind( this.onSerialize, this ) ); } @@ -786,7 +786,7 @@ this.saveDialog.saveButton.setDisabled( true ); this.saveDialog.$loadingIcon.show(); this.save( - ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList() ), + ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList(), doc.getInnerWhitespace() ), saveOptions ); } @@ -856,10 +856,11 @@ // Build linmod var store = new ve.dm.IndexValueStore(), internalList = new ve.dm.InternalList(), - data = ve.dm.converter.getDataFromDom( doc, store, internalList ); + innerWhitespace = new Array( 2 ), + data = ve.dm.converter.getDataFromDom( doc, store, internalList, innerWhitespace ); setTimeout( function () { // Build DM tree - var dmDoc = new ve.dm.Document( data, doc, undefined, internalList ); + var dmDoc = new ve.dm.Document( data, doc, undefined, internalList, innerWhitespace ); setTimeout( function () { // Create ui.Surface (also creates ce.Surface and dm.Surface and builds CE tree) target.surface = new ve.ui.Surface( dmDoc, target.surfaceOptions ); @@ -929,8 +930,8 @@ // were ignored in the conversion. So compare each child separately. var i, len = oldDom.body.childNodes.length, - newDoc = new ve.dm.Document( data, oldDom, undefined, doc.getInternalList() ), - newDom = ve.dm.converter.getDomFromData( newDoc.getFullData(), newDoc.getStore(), newDoc.getInternalList() ); + newDoc = new ve.dm.Document( data, oldDom, undefined, doc.getInternalList(), doc.getInnerWhitespace() ), + newDom = ve.dm.converter.getDomFromData( newDoc.getFullData(), newDoc.getStore(), newDoc.getInternalList(), newDoc.getInnerWhitespace() ); // Explicitly unlink our full copy of the original version of the document data data = undefined; diff --git a/modules/ve/dm/ve.dm.Converter.js b/modules/ve/dm/ve.dm.Converter.js index c031de6..f61836e 100644 --- a/modules/ve/dm/ve.dm.Converter.js +++ b/modules/ve/dm/ve.dm.Converter.js @@ -385,9 +385,10 @@ * @param {HTMLDocument} doc HTML document to convert * @param {ve.dm.IndexValueStore} store Index-value store * @param {ve.dm.InternalList} internalList Internal list + * @param {Array} innerWhitespace Inner whitespace * @returns {ve.dm.FlatLinearData} Linear model data */ -ve.dm.Converter.prototype.getDataFromDom = function ( doc,
[MediaWiki-commits] [Gerrit] Store inner whitespace of the body and compare it on conversion - change (mediawiki...VisualEditor)
Esanders has uploaded a new change for review. https://gerrit.wikimedia.org/r/92885 Change subject: Store inner whitespace of the body and compare it on conversion .. Store inner whitespace of the body and compare it on conversion Calculate and store the two inner whitespace values of the body in the dm.Document. When converting back, make sure the first/last nodes pre/post outer whitespace matches the inner left/right whitespace of the body. Bug: 54964 Change-Id: I45f1ffd63669f25a6cae878400bfe21719ed58ee --- M modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js M modules/ve/dm/ve.dm.Converter.js M modules/ve/dm/ve.dm.Document.js M modules/ve/test/dm/ve.dm.example.js M modules/ve/test/ve.test.utils.js 5 files changed, 86 insertions(+), 31 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/85/92885/1 diff --git a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js index 0a59927..b775daa 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js @@ -736,11 +736,11 @@ if ( this.pageExists ) { // Has no callback, handled via target.onShowChanges this.showChanges( - ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList() ) + ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList(), doc.getInnerWhitespace() ) ); } else { this.serialize( - ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList() ), + ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList(), doc.getInnerWhitespace() ), ve.bind( this.onSerialize, this ) ); } @@ -786,7 +786,7 @@ this.saveDialog.saveButton.setDisabled( true ); this.saveDialog.$loadingIcon.show(); this.save( - ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList() ), + ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList(), doc.getInnerWhitespace() ), saveOptions ); } @@ -856,10 +856,11 @@ // Build linmod var store = new ve.dm.IndexValueStore(), internalList = new ve.dm.InternalList(), - data = ve.dm.converter.getDataFromDom( doc, store, internalList ); + innerWhitespace = new Array( 2 ), + data = ve.dm.converter.getDataFromDom( doc, store, internalList, innerWhitespace ); setTimeout( function () { // Build DM tree - var dmDoc = new ve.dm.Document( data, doc, undefined, internalList ); + var dmDoc = new ve.dm.Document( data, doc, undefined, internalList, innerWhitespace ); setTimeout( function () { // Create ui.Surface (also creates ce.Surface and dm.Surface and builds CE tree) target.surface = new ve.ui.Surface( dmDoc, target.surfaceOptions ); @@ -929,8 +930,8 @@ // were ignored in the conversion. So compare each child separately. var i, len = oldDom.body.childNodes.length, - newDoc = new ve.dm.Document( data, oldDom, undefined, doc.getInternalList() ), - newDom = ve.dm.converter.getDomFromData( newDoc.getFullData(), newDoc.getStore(), newDoc.getInternalList() ); + newDoc = new ve.dm.Document( data, oldDom, undefined, doc.getInternalList(), doc.getInnerWhitespace() ), + newDom = ve.dm.converter.getDomFromData( newDoc.getFullData(), newDoc.getStore(), newDoc.getInternalList(), newDoc.getInnerWhitespace() ); // Explicitly unlink our full copy of the original version of the document data data = undefined; diff --git a/modules/ve/dm/ve.dm.Converter.js b/modules/ve/dm/ve.dm.Converter.js index c031de6..de792b9 100644 --- a/modules/ve/dm/ve.dm.Converter.js +++ b/modules/ve/dm/ve.dm.Converter.js @@ -385,9 +385,10 @@ * @param {HTMLDocument} doc HTML document to convert * @param {ve.dm.IndexValueStore} store Index-value store * @param {ve.dm.InternalList} internalList Internal list + * @param {Array} innerWhitespace Inner whitespace * @returns {ve.dm.FlatLinearData} Linear model data */ -