[MediaWiki-commits] [Gerrit] WTS: More robust handling of zero-child case in serializeChi... - change (mediawiki...Parsoid)

2013-04-02 Thread GWicke (Code Review)
GWicke has submitted this change and it was merged.

Change subject: WTS: More robust handling of zero-child case in 
serializeChildren
..


WTS: More robust handling of zero-child case in serializeChildren

* If a node has a no children, pass the node itself as the
  lastSourceSep node into chunk callbacks.

* This patch also makes WTS more robust and doesn't rely on
  the DOM pass stripping out auto-inserted empty nodes in snippets
  like:
---
{|
|-
{{echo|trtdfoo/td/tr}}
|}
---

* Fixes regression on this snippet (with leading whitespace) from
  en:4WD.
---
 {|
 |
 | a
 |}
---

* Also fixes RT errors for this snippet from:
  en:I Know why the Caged Bird Sings
---
blockquotea
pb/blockquote
---

* This fixes semantic errors on both enwp pages above.

* No change in parser tests (TODO: add more tests).

Change-Id: I01788e7ad96c8ac6b3a20434f77d3dd5ccb94d20
---
M js/lib/mediawiki.DOMPostProcessor.js
M js/lib/mediawiki.WikitextSerializer.js
2 files changed, 6 insertions(+), 2 deletions(-)

Approvals:
  GWicke: Verified; Looks good to me, approved
  jenkins-bot: Verified



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..19a46df 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -402,7 +402,11 @@
 
// Force out accumulated separator
if (oldSep === this.sep) {
-   chunkCB('', children.last());
+   if (children.length === 0) {
+   chunkCB('', node);
+   } 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: merged
Gerrit-Change-Id: I01788e7ad96c8ac6b3a20434f77d3dd5ccb94d20
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry ssas...@wikimedia.org
Gerrit-Reviewer: GWicke gwi...@wikimedia.org
Gerrit-Reviewer: Subramanya Sastry ssas...@wikimedia.org
Gerrit-Reviewer: jenkins-bot

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits


[MediaWiki-commits] [Gerrit] WTS: More robust handling of zero-child case in serializeChi... - change (mediawiki...Parsoid)

2013-04-01 Thread Subramanya Sastry (Code Review)
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