Subramanya Sastry has uploaded a new change for review. https://gerrit.wikimedia.org/r/57024
Change subject: WTS: More robust handling of zero-child case in serializeChildren ...................................................................... WTS: More robust handling of zero-child case in serializeChildren * Omit calls to emitSeparator if a node has no children and also happens to be zero-width. * No change in parser tests, but this makes the code more robust and doesn't rely on the DOM pass stripping out such nodes. Change-Id: I01788e7ad96c8ac6b3a20434f77d3dd5ccb94d20 --- M js/lib/mediawiki.DOMPostProcessor.js M js/lib/mediawiki.WikitextSerializer.js 2 files changed, 16 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid refs/changes/24/57024/1 diff --git a/js/lib/mediawiki.DOMPostProcessor.js b/js/lib/mediawiki.DOMPostProcessor.js index 995c558..1f2a9e7 100644 --- a/js/lib/mediawiki.DOMPostProcessor.js +++ b/js/lib/mediawiki.DOMPostProcessor.js @@ -1601,7 +1601,7 @@ deleteNode(c); } } else if (dp.autoInsertedStart && dp.autoInsertedEnd && c.childNodes.length === 0) { - // DEle + // Delete any node that was inserted as a fixup node but has no content deleteNode(c); } else { findDeletedStartTagsAndMore(c); diff --git a/js/lib/mediawiki.WikitextSerializer.js b/js/lib/mediawiki.WikitextSerializer.js index 6edf96e..73054c5 100644 --- a/js/lib/mediawiki.WikitextSerializer.js +++ b/js/lib/mediawiki.WikitextSerializer.js @@ -402,7 +402,21 @@ // Force out accumulated separator if (oldSep === this.sep) { - chunkCB('', children.last()); + // If node has no children, has valid dsr, and is zero-width + // then dont try to emit separators (since this would try to + // use makeSeparator to satisfy separator constraints which + // dont exist.) + // + // SSS FIXME: Should this be more generic and be part of either + // emitSeparator or makeSeparator??? + if (children.length === 0) { + var dsr = node.data && node.data.parsoid ? node.data.parsoid.dsr : []; + if (!dsr || dsr[0] === null || dsr[0] !== dsr[1]) { + chunkCB(''); + } + } else { + chunkCB('', children.last()); + } } this.chunkCB = oldCB; -- To view, visit https://gerrit.wikimedia.org/r/57024 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I01788e7ad96c8ac6b3a20434f77d3dd5ccb94d20 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/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