Subramanya Sastry has uploaded a new change for review.

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

Change subject: Get rid of 'env' from DOMUtil.helpers and dependent call chain
......................................................................

Get rid of 'env' from DOMUtil.helpers and dependent call chain

* Moved aboutId tests from the MWEnvironment object to Util
  to eliminate unnecessary dependency on the env object in
  various helpers.

* This lets me remove env from a whole bunch of dependent calls
  and in a future patch, will let me tweak the isNewElt helper
  without needing to pass the env object from everywhere.

Change-Id: Ia855f9e56ce58d87539682454c47fc6cb6306336
---
M lib/dom.cleanUpTemplates.js
M lib/dom.cleanup.js
M lib/dom.linter.js
M lib/dom.markFosteredContent.js
M lib/dom.markTreeBuilderFixups.js
M lib/dom.t.handleLinkNeighbours.js
M lib/dom.wrapTemplates.js
M lib/mediawiki.DOMDiff.js
M lib/mediawiki.DOMUtils.js
M lib/mediawiki.Util.js
M lib/mediawiki.parser.environment.js
M tests/domdiff.test.js
M tests/parserTests.js
13 files changed, 36 insertions(+), 37 deletions(-)


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

diff --git a/lib/dom.cleanUpTemplates.js b/lib/dom.cleanUpTemplates.js
index 168a5ea..26bdbd2 100644
--- a/lib/dom.cleanUpTemplates.js
+++ b/lib/dom.cleanUpTemplates.js
@@ -2,7 +2,7 @@
 
 var DU = require('./mediawiki.DOMUtils.js').DOMUtils;
 
-function stripEmptyElements(node, tplInfo, env, options) {
+function stripEmptyElements(node, tplInfo, options) {
        // Cannot delete if:
        // * it is the first node since that carries the transclusion
        //   information (typeof, data-mw). We could delete and migrate
@@ -16,7 +16,7 @@
        }
 }
 
-function removeDataParsoid(node, tplInfo, env, options) {
+function removeDataParsoid(node, tplInfo, options) {
        if (node !== tplInfo.first) {
                // TODO: We can't remove dp from nodes with stx information
                // right now, as the serializer needs that information to know 
which
diff --git a/lib/dom.cleanup.js b/lib/dom.cleanup.js
index 11c5ba3..dc170ca 100644
--- a/lib/dom.cleanup.js
+++ b/lib/dom.cleanup.js
@@ -43,7 +43,7 @@
                        // Delete empty auto-inserted elements
                        var next = node.nextSibling;
                        if (dp.autoInsertedStart && dp.autoInsertedEnd &&
-                               !DU.isTplOrExtToplevelNode(env, node) &&
+                               !DU.isTplOrExtToplevelNode(node) &&
                                (node.childNodes.length === 0 ||
                                node.childNodes.length === 1 && 
!DU.isElt(node.firstChild) && /^\s*$/.test(node.textContent)))
                        {
diff --git a/lib/dom.linter.js b/lib/dom.linter.js
index 2700b4d..96d0470 100644
--- a/lib/dom.linter.js
+++ b/lib/dom.linter.js
@@ -87,7 +87,7 @@
        // 1. c is a void element
        // 2. c is not self-closed
        // 3. c is not tbody
-       if ( DU.isTplOrExtToplevelNode(env, c) ||
+       if ( DU.isTplOrExtToplevelNode(c) ||
                (!Util.isVoidElement(cNodeName) &&
                !dp.selfClose &&
                cNodeName !== 'tbody' &&
@@ -258,7 +258,7 @@
                // Store info from the first node of an about id group.
                // Nested templates aren't an issue because we expand top-level
                // templates with the mediawiki api.
-               if ( !tmpl && DU.isTplOrExtToplevelNode(env, c) ) {
+               if ( !tmpl && DU.isTplOrExtToplevelNode(c) ) {
                        var about = c.getAttribute('about');
                        tmpl = {
                                last: DU.getAboutSiblings(c, about).last(),
diff --git a/lib/dom.markFosteredContent.js b/lib/dom.markFosteredContent.js
index 7522674..98ece7c 100644
--- a/lib/dom.markFosteredContent.js
+++ b/lib/dom.markFosteredContent.js
@@ -67,7 +67,7 @@
        // between so keep track of that, and backtrack when necessary.
        while ( sibling ) {
                if ( !DU.isTplStartMarkerMeta( sibling ) && (
-                        DU.isTplOrExtToplevelNode( env, sibling ) ||
+                        DU.isTplOrExtToplevelNode( sibling ) ||
                         DU.isMarkerMeta( sibling, "mw:EndTag" ) ||
                         DU.isMarkerMeta( sibling, "mw:TransclusionShadow" )
                )) {
diff --git a/lib/dom.markTreeBuilderFixups.js b/lib/dom.markTreeBuilderFixups.js
index 12a37f7..56a6bf2 100644
--- a/lib/dom.markTreeBuilderFixups.js
+++ b/lib/dom.markTreeBuilderFixups.js
@@ -165,7 +165,7 @@
 
        while (c !== null) {
                // Skip over template/extension content
-               if (DU.isTplOrExtToplevelNode( env, node )) {
+               if (DU.isTplOrExtToplevelNode( node )) {
                        var about = node.getAttribute( 'about' );
                        c = c.nextSibling;
                        while (c && node.getAttribute('about') === about) {
diff --git a/lib/dom.t.handleLinkNeighbours.js 
b/lib/dom.t.handleLinkNeighbours.js
index e038620..b87f22f 100644
--- a/lib/dom.t.handleLinkNeighbours.js
+++ b/lib/dom.t.handleLinkNeighbours.js
@@ -18,7 +18,7 @@
                return null;
        }
 
-       if ( node !== null && DU.isTplOrExtToplevelNode( env, node ) ) {
+       if ( node !== null && DU.isTplOrExtToplevelNode( node ) ) {
                baseAbout = node.getAttribute( 'about' );
        }
 
@@ -37,7 +37,7 @@
                return null;
        }
 
-       if ( node !== null && DU.isTplOrExtToplevelNode( env, node ) ) {
+       if ( node !== null && DU.isTplOrExtToplevelNode( node ) ) {
                baseAbout = node.getAttribute( 'about' );
        }
 
@@ -77,7 +77,7 @@
                                value.content = null;
                                break;
                        }
-               } else if ( DU.isTplOrExtToplevelNode( env, node ) &&
+               } else if ( DU.isTplOrExtToplevelNode( node ) &&
                                baseAbout !== '' && baseAbout !== null &&
                                node.getAttribute( 'about' ) === baseAbout ) {
                        value = getInnerNeighbour( env, node[innerNode] );
@@ -155,7 +155,7 @@
                if ( trail.src.length > 0 ) {
                        dp.tail = trail.src;
                        var about = node.getAttribute('about');
-                       if ( DU.isTplOrExtToplevelNode( env, node ) &&
+                       if ( DU.isTplOrExtToplevelNode( node ) &&
                                DU.getAboutSiblings( node, about ).length === 1
                        ) {
                                // search back for the first wrapper but
diff --git a/lib/dom.wrapTemplates.js b/lib/dom.wrapTemplates.js
index e2a93bc..f4bd8e9 100644
--- a/lib/dom.wrapTemplates.js
+++ b/lib/dom.wrapTemplates.js
@@ -130,7 +130,7 @@
        var range = {
                startElem: startElem,
                endElem: endMeta,
-               id: env.stripIdPrefix(startElem.getAttribute("about")),
+               id: Util.stripParsoidIdPrefix(startElem.getAttribute("about")),
                startOffset: DU.getDataParsoid( startElem ).tsr[0],
                flipped: false
        };
diff --git a/lib/mediawiki.DOMDiff.js b/lib/mediawiki.DOMDiff.js
index 7c923bd..76939f7 100644
--- a/lib/mediawiki.DOMDiff.js
+++ b/lib/mediawiki.DOMDiff.js
@@ -159,8 +159,8 @@
        }
 };
 
-function nextNonTemplateSibling(env, node) {
-       return DU.isTplOrExtToplevelNode(env, node) ? 
DU.skipOverEncapsulatedContent(node) : node.nextSibling;
+function nextNonTemplateSibling(node) {
+       return DU.isTplOrExtToplevelNode(node) ? 
DU.skipOverEncapsulatedContent(node) : node.nextSibling;
 }
 
 /**
@@ -232,7 +232,7 @@
                                                newNode = lookaheadNode;
                                                break;
                                        }
-                                       lookaheadNode = 
nextNonTemplateSibling(this.env, lookaheadNode);
+                                       lookaheadNode = 
nextNonTemplateSibling(lookaheadNode);
                                }
                        }
 
@@ -260,7 +260,7 @@
                                                // between block nodes).
                                                isBlockNode = 
DU.isBlockNodeWithVisibleWT(lookaheadNode);
                                        }
-                                       lookaheadNode = 
nextNonTemplateSibling(this.env, lookaheadNode);
+                                       lookaheadNode = 
nextNonTemplateSibling(lookaheadNode);
                                }
                        }
 
@@ -275,8 +275,8 @@
                                        // Mark as modified, and recurse.
                                        this.debug("--found diff: 
modified-wrapper--");
                                        this.markNode(savedNewNode, 
'modified-wrapper');
-                                       if 
(!DU.isTplOrExtToplevelNode(this.env, baseNode) &&
-                                               
!DU.isTplOrExtToplevelNode(this.env, savedNewNode))
+                                       if 
(!DU.isTplOrExtToplevelNode(baseNode) &&
+                                               
!DU.isTplOrExtToplevelNode(savedNewNode))
                                        {
                                                // Dont recurse into 
template-like-content
                                                this.doDOMDiff(baseNode, 
savedNewNode);
@@ -303,7 +303,7 @@
                        this.markNode(newParentNode, 'children-changed');
 
                        foundDiffOverall = true;
-               } else if (!DU.isTplOrExtToplevelNode(this.env, baseNode) && 
!DU.isTplOrExtToplevelNode(this.env, newNode)) {
+               } else if (!DU.isTplOrExtToplevelNode(baseNode) && 
!DU.isTplOrExtToplevelNode(newNode)) {
                        this.debug("--shallow equal: recursing--");
                        // Recursively diff subtrees if not template-like 
content
                        var subtreeDiffers = this.doDOMDiff(baseNode, newNode);
@@ -316,9 +316,9 @@
 
                // And move on to the next pair (skipping over template HTML)
                if (baseNode && newNode) {
-                       baseNode = nextNonTemplateSibling(this.env, baseNode);
+                       baseNode = nextNonTemplateSibling(baseNode);
                        if (!dontAdvanceNewNode) {
-                               newNode = nextNonTemplateSibling(this.env, 
newNode);
+                               newNode = nextNonTemplateSibling(newNode);
                        }
                }
        }
@@ -328,7 +328,7 @@
                this.debug("--found trailing new node: inserted--");
                this.markNode(newNode, 'inserted');
                foundDiffOverall = true;
-               newNode = nextNonTemplateSibling(this.env, newNode);
+               newNode = nextNonTemplateSibling(newNode);
        }
 
        // If there are extra base nodes, something was deleted. Mark the 
parent as
diff --git a/lib/mediawiki.DOMUtils.js b/lib/mediawiki.DOMUtils.js
index 272ed0a..578ea81 100644
--- a/lib/mediawiki.DOMUtils.js
+++ b/lib/mediawiki.DOMUtils.js
@@ -792,10 +792,10 @@
         * @param {MWParserEnvironment} env
         * @param {Node} node
         */
-       isTplOrExtToplevelNode: function(env, node) {
+       isTplOrExtToplevelNode: function(node) {
                if (isElt(node)) {
                        var about = node.getAttribute('about');
-                       return about && env.isParsoidObjectId(about);
+                       return about && Util.isParsoidObjectId(about);
                } else {
                        return false;
                }
@@ -814,7 +814,7 @@
                        if (DU.isElt(c)) {
                                // Identify template/extension content (not 
interested in "mw:Param" nodes).
                                // We are interested in the very first node.
-                               if (this.isTplOrExtToplevelNode(env, c) &&
+                               if (this.isTplOrExtToplevelNode(c) &&
                                        
/(^|\s)mw:(Extension|Transclusion)/.test(c.getAttribute("typeof")))
                                {
                                        // We know that tplInfo will be null 
here since we don't
@@ -834,7 +834,7 @@
                                this.traverseTplOrExtNodes(cb, c, env, options, 
atTopLevel, tplInfo);
 
                                if (tplInfo) {
-                                       cb(c, tplInfo, env, options);
+                                       cb(c, tplInfo, options);
 
                                        // Clear tpl info
                                        if (c === tplInfo.last || tplInfo.done) 
{
diff --git a/lib/mediawiki.Util.js b/lib/mediawiki.Util.js
index af26779..f86e288 100644
--- a/lib/mediawiki.Util.js
+++ b/lib/mediawiki.Util.js
@@ -380,6 +380,14 @@
                return tgt;
        },
 
+       stripParsoidIdPrefix: function(aboutId) {
+               return aboutId.replace(/^#?mwt/, '');
+       },
+
+       isParsoidObjectId: function(aboutId) {
+               return aboutId.match(/^#mwt/);
+       },
+
        /**
        * Determine if a tag is block-level or not
        */
diff --git a/lib/mediawiki.parser.environment.js 
b/lib/mediawiki.parser.environment.js
index 53a49d2..90ee85e 100644
--- a/lib/mediawiki.parser.environment.js
+++ b/lib/mediawiki.parser.environment.js
@@ -555,14 +555,6 @@
        return "#" + this.newObjectId();
 };
 
-MWParserEnvironment.prototype.stripIdPrefix = function(aboutId) {
-       return aboutId.replace(/^#?mwt/, '');
-};
-
-MWParserEnvironment.prototype.isParsoidObjectId = function(aboutId) {
-       return aboutId.match(/^#mwt/);
-};
-
 if (typeof module === "object") {
        module.exports.MWParserEnvironment = MWParserEnvironment;
 }
diff --git a/tests/domdiff.test.js b/tests/domdiff.test.js
index 66462e6..b4daeb0 100755
--- a/tests/domdiff.test.js
+++ b/tests/domdiff.test.js
@@ -52,8 +52,7 @@
 
 var dummyEnv = {
        conf: { parsoid: { debug: Util.booleanOption( argv.debug ) }, wiki: {} 
},
-       page: { id: null },
-       isParsoidObjectId: function() { return true; }
+       page: { id: null }
 };
 
 if (argv.debug) {
diff --git a/tests/parserTests.js b/tests/parserTests.js
index 18d1f9f..ec2546d 100755
--- a/tests/parserTests.js
+++ b/tests/parserTests.js
@@ -676,7 +676,7 @@
         * Currently true for template and extension content, and for entities.
         */
        function domSubtreeIsEditable(env, node) {
-               return !DU.isTplOrExtToplevelNode(env, node) &&
+               return !DU.isTplOrExtToplevelNode(node) &&
                        !(DU.isElt(node) && node.getAttribute("typeof") === 
"mw:Entity");
        }
 

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

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