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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits