Subramanya Sastry has uploaded a new change for review. https://gerrit.wikimedia.org/r/202996
Change subject: Bug fix serializing nested refs ...................................................................... Bug fix serializing nested refs * <ref> ids should be looked up in the edited DOM, not the original DOM. Change-Id: I3745f30721993bf1d2389e8c6868fae1d1c91235 --- M lib/mediawiki.SelectiveSerializer.js M lib/mediawiki.WikitextSerializer.js M tests/parserTests.js 3 files changed, 14 insertions(+), 11 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid refs/changes/96/202996/1 diff --git a/lib/mediawiki.SelectiveSerializer.js b/lib/mediawiki.SelectiveSerializer.js index 9ed0477..e33814f 100644 --- a/lib/mediawiki.SelectiveSerializer.js +++ b/lib/mediawiki.SelectiveSerializer.js @@ -83,9 +83,7 @@ if ( !diff.isEmpty ) { body = diff.dom; - - // Add the serializer info - // new DiffToSelserConverter(this.env, body).convert(); + this.env.page.editedDoc = body.ownerDocument; if ( this.trace || ( this.env.conf.parsoid.dumpFlags && this.env.conf.parsoid.dumpFlags.indexOf( 'dom:post-dom-diff' ) !== -1) ) { diff --git a/lib/mediawiki.WikitextSerializer.js b/lib/mediawiki.WikitextSerializer.js index 778ed8d..26f1820 100644 --- a/lib/mediawiki.WikitextSerializer.js +++ b/lib/mediawiki.WikitextSerializer.js @@ -528,8 +528,8 @@ }; WSP._buildExtensionWT = function(state, node, dataMW) { - var extName = dataMW.name, - srcParts = ["<", extName]; + var extName = dataMW.name; + var srcParts = ["<", extName]; // Serialize extension attributes in normalized form as: // key='value' @@ -575,11 +575,11 @@ // If the body isn't contained in data-mw.body.html, look if // there's an element pointed to by body.id. var bodyElt = node.ownerDocument.getElementById(dataMW.body.id); - if (!bodyElt && state.env.page.dom) { + if (!bodyElt && state.env.page.editedDoc) { // Try to get to it from the main page. // This can happen when the <ref> is inside another extension, // most commonly inside a <references>. - bodyElt = state.env.page.dom.ownerDocument.getElementById(dataMW.body.id); + bodyElt = state.env.page.editedDoc.getElementById(dataMW.body.id); } if (bodyElt) { htmlText = bodyElt.innerHTML; @@ -593,7 +593,7 @@ if (ref) { extraDebug += ' [own doc: ' + ref.outerHTML + ']'; } - ref = state.env.page.dom.ownerDocument.querySelector(href); + ref = state.env.page.editedDoc.querySelector(href); if (ref) { extraDebug += ' [main doc: ' + ref.outerHTML + ']'; } @@ -1367,8 +1367,8 @@ this.logType = selserMode ? "trace/selser" : "trace/wts"; this.trace = this.env.log.bind(this.env, this.logType); - if (!this.env.page.dom) { - this.env.page.dom = body; + if (!this.env.page.editedDoc) { + this.env.page.editedDoc = body.ownerDocument; } var state = new SerializerState(this, this.options); try { diff --git a/tests/parserTests.js b/tests/parserTests.js index 400d068..ef05a0e 100755 --- a/tests/parserTests.js +++ b/tests/parserTests.js @@ -421,7 +421,12 @@ : new WikitextSerializer({ env: this.env }); try { - this.env.page.dom = item.cachedBODY; + if (startsAtWikitext) { + // FIXME: All tests share an env. + // => we need to initialize this each time over here. + this.env.page.dom = item.cachedBODY; + this.env.page.editedDoc = item.cachedBODY.ownerDoc; + } if ( mode === 'selser' ) { // console.warn("--> selsering: " + body.outerHTML); this.env.setPageSrcInfo( item.wikitext ); -- To view, visit https://gerrit.wikimedia.org/r/202996 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3745f30721993bf1d2389e8c6868fae1d1c91235 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Subramanya Sastry <ssas...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits