Subramanya Sastry has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/135084

Change subject: WTS: Code cleanup to improve readability.
......................................................................

WTS: Code cleanup to improve readability.

* Code clarity tweak: Update modification flag first

* 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.

* 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: I9a4507bd672251a2f632d908929cc8dcc640971a
---
M lib/mediawiki.WikitextSerializer.js
1 file changed, 19 insertions(+), 20 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/84/135084/1

diff --git a/lib/mediawiki.WikitextSerializer.js 
b/lib/mediawiki.WikitextSerializer.js
index 6c28e5e..ac217d8 100644
--- a/lib/mediawiki.WikitextSerializer.js
+++ b/lib/mediawiki.WikitextSerializer.js
@@ -967,23 +967,25 @@
 WSP._serializeNode = function( node, state, cb) {
        var prev, next, nextNode;
 
+       // First things first -- update modification flag
+       state.prevNodeUnmodified = state.currNodeUnmodified;
+
        // 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);
+                                       "; prev-unmodified: ", 
state.prevNodeUnmodified,
+                                       "; SOL: ", state.onSOL);
                        } else {
                                this.trace("NODE:", node.nodeName, "; SOL: ", 
state.onSOL);
+                       }
+
+                       // Ignore DiffMarker metas, but clear unmodified node 
state
+                       if (DU.isMarkerMeta(node, "mw:DiffMarker")) {
+                               state.currNodeUnmodified = false;
+                               state.sep.lastSourceNode = node;
+                               return node.nextSibling;
                        }
 
                        var dp = DU.getDataParsoid( node );
@@ -1074,7 +1076,6 @@
                        }
 
                        if ( !handled ) {
-                               state.prevNodeUnmodified = 
state.currNodeUnmodified;
                                state.currNodeUnmodified = false;
                                // console.warn("USED NEW");
                                if ( domHandler && domHandler.handle ) {
@@ -1107,12 +1108,11 @@
 
                        break;
                case node.TEXT_NODE:
-                       state.prevNodeUnmodified = state.currNodeUnmodified;
-                       state.currNodeUnmodified = false;
-
                        this.trace("TEXT:",
-                               function() { return 
JSON.stringify(node.nodeValue); },
-                               "; SOL:", state.onSOL);
+                                       function() { return 
JSON.stringify(node.nodeValue); },
+                                       "; SOL:", state.onSOL);
+
+                       state.currNodeUnmodified = false;
 
                        if (!this.handleSeparatorText(node, state)) {
                                // Text is not just whitespace
@@ -1134,13 +1134,12 @@
                        }
                        break;
                case node.COMMENT_NODE:
-                       state.prevNodeUnmodified = state.currNodeUnmodified;
-                       state.currNodeUnmodified = false;
-
                        this.trace("CMT :",
-                               function() { return 
JSON.stringify("<!--"+node.nodeValue+"-->"); },
+                               function() { return 
JSON.stringify(WTSUtils.commentWT(node.nodeValue)); },
                                "; SOL: ", state.onSOL);
 
+                       state.currNodeUnmodified = false;
+
                        // delay the newline creation until after the comment
                        if (!this.handleSeparatorText(node, state)) {
                                cb(WTSUtils.commentWT(node.nodeValue), node);

-- 
To view, visit https://gerrit.wikimedia.org/r/135084
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9a4507bd672251a2f632d908929cc8dcc640971a
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

Reply via email to