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

Reply via email to