Subramanya Sastry has uploaded a new change for review.
https://gerrit.wikimedia.org/r/135953
Change subject: WTS: Code cleanup to improve readability.
......................................................................
WTS: Code cleanup to improve readability.
* Update state.prevNodeUnmodified and state.currNodeUnmodified
in the main serialization function and eliminate the confusion
from updating it in SerializerState (but which only happens
when the node generates an output that results in cb being
invoked).
* Got rid of confusing trace output for current node (whose flag
hasn't been updated yet).
* Emit trace output for diff-marker nodes as well.
* Emit trace output in serializeChildren as well.
* This doesn't affect any parser test results.
But, doing this cleanup here minimizes diffs in the upcoming
dom-diff and selser improvement patches.
Change-Id: I8e915f933721e1890a932afc91d3aec992b54f9e
---
M lib/mediawiki.WikitextSerializer.js
M lib/wts.SerializerState.js
2 files changed, 29 insertions(+), 29 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/53/135953/1
diff --git a/lib/mediawiki.WikitextSerializer.js
b/lib/mediawiki.WikitextSerializer.js
index 77748ce..0f32cc6 100644
--- a/lib/mediawiki.WikitextSerializer.js
+++ b/lib/mediawiki.WikitextSerializer.js
@@ -960,29 +960,45 @@
return out;
};
+function traceNodeName(node) {
+ switch (node.nodeType) {
+ case node.ELEMENT_NODE:
+ return DU.isMarkerMeta(node, "mw:DiffMarker") ? "DIFF_MARK" : "NODE:
" + node.nodeName;
+ case node.TEXT_NODE:
+ return "TEXT: " + JSON.stringify(node.nodeValue);
+ case node.COMMENT_NODE:
+ return "CMT : " + JSON.stringify(WTSUtils.commentWT(node.nodeValue));
+ default:
+ return node.nodeName;
+ }
+}
+
/**
* Internal worker. Recursively serialize a DOM subtree.
*/
WSP._serializeNode = function( node, state, cb ) {
var prev, next, nextNode;
+ // Default update
+ state.prevNodeUnmodified = state.currNodeUnmodified;
+ state.currNodeUnmodified = false;
+
+ if (state.selserMode) {
+ this.trace(function() { return traceNodeName(node); },
+ "; prev-unmodified: ", state.prevNodeUnmodified,
+ "; SOL: ", state.onSOL);
+ } else {
+ this.trace(function() { return traceNodeName(node); },
+ "; SOL: ", state.onSOL);
+ }
+
// serialize this node
switch( node.nodeType ) {
case node.ELEMENT_NODE:
// Ignore DiffMarker metas, but clear unmodified node
state
if (DU.isMarkerMeta(node, "mw:DiffMarker")) {
- state.prevNodeUnmodified =
state.currNodeUnmodified;
- state.currNodeUnmodified = false;
state.sep.lastSourceNode = node;
- return node;
- }
-
- if (state.selserMode) {
- this.trace("NODE:", node.nodeName,
- "; prev-flag: ",
state.prevNodeUnmodified,
- "; curr-flag: ",
state.currNodeUnmodified);
- } else {
- this.trace("NODE:", node.nodeName, "; SOL: ",
state.onSOL);
+ return node.nextSibling;
}
var dp = DU.getDataParsoid( node );
@@ -1073,8 +1089,6 @@
}
if ( !handled ) {
- state.prevNodeUnmodified =
state.currNodeUnmodified;
- state.currNodeUnmodified = false;
// console.warn("USED NEW");
if ( domHandler && domHandler.handle ) {
// DOM-based serialization
@@ -1106,13 +1120,6 @@
break;
case node.TEXT_NODE:
- state.prevNodeUnmodified = state.currNodeUnmodified;
- state.currNodeUnmodified = false;
-
- this.trace("TEXT:",
- function() { return
JSON.stringify(node.nodeValue); },
- "; SOL:", state.onSOL);
-
if (!this.handleSeparatorText(node, state)) {
// Text is not just whitespace
prev = DU.previousNonSepSibling(node) ||
node.parentNode;
@@ -1133,13 +1140,6 @@
}
break;
case node.COMMENT_NODE:
- state.prevNodeUnmodified = state.currNodeUnmodified;
- state.currNodeUnmodified = false;
-
- this.trace("CMT :",
- function() { return
JSON.stringify("<!--"+node.nodeValue+"-->"); },
- "; SOL: ", state.onSOL);
-
// delay the newline creation until after the comment
if (!this.handleSeparatorText(node, state)) {
cb(WTSUtils.commentWT(node.nodeValue), node);
diff --git a/lib/wts.SerializerState.js b/lib/wts.SerializerState.js
index 01f7dcc..f611ca7 100644
--- a/lib/wts.SerializerState.js
+++ b/lib/wts.SerializerState.js
@@ -159,9 +159,7 @@
this.serializer.emitSeparator(this, cb, node);
}
- this.prevNodeUnmodified = this.currNodeUnmodified;
this.prevNode = node;
- this.currNodeUnmodified = false;
if (this.onSOL) {
this.resetCurrLine(node);
@@ -209,8 +207,10 @@
// the top level callback at a slightly coarser level.
appendToBits = function(out) { bits += out; },
self = this,
+ logType = self.serializer.logType,
cb = function(res, node) {
self.emitSepAndOutput(res, node, appendToBits);
+ self.env.log(logType, "--->", "OUT(C):", function() {
return JSON.stringify(res); });
};
this.sep = {};
if (onSOL !== undefined) {
--
To view, visit https://gerrit.wikimedia.org/r/135953
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8e915f933721e1890a932afc91d3aec992b54f9e
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