jenkins-bot has submitted this change and it was merged.

Change subject: Use tagWidths for content in Util.getArgInfo
......................................................................


Use tagWidths for content in Util.getArgInfo

 * Use nestedRefsHTML.length to determine when we need a dataMw.body,
   the regexps there were unnecessary.

 * Pulled out of https://gerrit.wikimedia.org/r/#/c/264026/

Change-Id: I4602594e468322c8b6b8653eee33047ef9af9ebc
---
M lib/ext/Cite/index.js
M lib/utils/Util.js
2 files changed, 14 insertions(+), 22 deletions(-)

Approvals:
  Subramanya Sastry: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/ext/Cite/index.js b/lib/ext/Cite/index.js
index 6df728d..e6804c8 100644
--- a/lib/ext/Cite/index.js
+++ b/lib/ext/Cite/index.js
@@ -378,7 +378,7 @@
 };
 
 References.prototype.extractRefFromNode = function(node, refsData,
-               refInRefProcessor, referencesAboutId, referencesGroup, 
refsInReferencesHTML) {
+               refInRefProcessor, referencesAboutId, referencesGroup, 
nestedRefsHTML) {
        var nestedInReferences = referencesAboutId !== undefined;
        var dp = DU.getDataParsoid(node);
        // SSS FIXME: Need to clarify semantics here.
@@ -474,7 +474,7 @@
        if (!nestedInReferences) {
                node.parentNode.insertBefore(span, node);
        } else {
-               refsInReferencesHTML.push(DU.ppToXML(span), '\n');
+               nestedRefsHTML.push(DU.ppToXML(span), '\n');
        }
 
        // Keep the first content to compare multiple <ref>s with the same name.
@@ -483,7 +483,7 @@
        }
 };
 
-References.prototype.insertReferencesIntoDOM = function(refsNode, refsData, 
refsInReferencesHTML, autoGenerated) {
+References.prototype.insertReferencesIntoDOM = function(refsNode, refsData, 
nestedRefsHTML, autoGenerated) {
        var dp = DU.getDataParsoid(refsNode);
        var group = dp.group || '';
 
@@ -501,13 +501,8 @@
                // html -> wt and so that clients can strip it if necessary.
                if (autoGenerated) {
                        dataMw.autoGenerated = true;
-               }
-
-               var src = dp.src || '<references/>';  // fall back so we don't 
crash
-               // Extract ext-source for <references>..</references> usage
-               var body = Util.extractExtBody('references', src).trim();
-               if (body.length > 0) {
-                       dataMw.body = { 'html': refsInReferencesHTML.join('') };
+               } else if (nestedRefsHTML.length > 0) {
+                       dataMw.body = { 'html': '\n' + nestedRefsHTML.join('') 
};
                }
 
                DU.setDataMw(refsNode, dataMw);
@@ -639,7 +634,7 @@
                        } else if 
((/(?:^|\s)mw:Extension\/references(?=$|\s)/).test(typeOf)) {
                                var referencesId = child.getAttribute("about");
                                var referencesGroup = 
DU.getDataParsoid(child).group;
-                               var nestedRefsHTML = ["\n"];
+                               var nestedRefsHTML = [];
                                _processRefsInReferences(cite, refsData,
                                        child, referencesId, referencesGroup, 
nestedRefsHTML);
                                cite.references.insertReferencesIntoDOM(child, 
refsData, nestedRefsHTML);
diff --git a/lib/utils/Util.js b/lib/utils/Util.js
index eb355d3..bcdfb93 100644
--- a/lib/utils/Util.js
+++ b/lib/utils/Util.js
@@ -1175,11 +1175,10 @@
                }, finalCB);
        },
 
-       extractExtBody: function(extName, extTagSrc) {
-               var re = "<" + extName + "[^>]*/?>([\\s\\S]*)";
-               return extTagSrc.replace(new RegExp(re, "mi"), function() {
-                       return arguments[1].replace(new RegExp("</" + extName + 
"\\s*>", "mi"), "");
-               });
+       extractExtBody: function(token) {
+               var src = token.getAttribute('source');
+               var tagWidths = token.dataAttribs.tagWidths;
+               return src.substring(tagWidths[0], src.length - tagWidths[1]);
        },
 
        // Returns the utf8 encoding of the code point
@@ -1415,9 +1414,8 @@
 
 // Helper function to process extension source
 Util.processExtSource = function(manager, extToken, opts) {
-       var extSrc = extToken.getAttribute('source');
+       var extBody = Util.extractExtBody(extToken);
        var tagWidths = extToken.dataAttribs.tagWidths;
-       var content = extSrc.substring(tagWidths[0], extSrc.length - 
tagWidths[1]);
 
        // FIXME: Should this be specific to the extension
        // Or is it okay to do this unconditionally for all?
@@ -1428,11 +1426,11 @@
        // FIXME: SSS: This stripping maybe be unnecessary after all.
        //
        // Strip all leading white-space
-       var wsMatch = content.match(/^(\s*)([^]*)$/);
+       var wsMatch = extBody.match(/^(\s*)([^]*)$/);
        var leadingWS = wsMatch[1];
 
        // Update content to normalized form
-       content = wsMatch[2];
+       var content = wsMatch[2];
 
        if (!content || content.length === 0) {
                opts.emptyContentCB(opts.res);
@@ -1454,12 +1452,11 @@
 Util.getArgInfo = function(extToken) {
        var name = extToken.getAttribute('name');
        var options = extToken.getAttribute('options');
-       var src = extToken.getAttribute('source');
        return {
                dict: {
                        name: name,
                        attrs: Util.KVtoHash(options, true),
-                       body: { extsrc: Util.extractExtBody(name, src) },
+                       body: { extsrc: Util.extractExtBody(extToken) },
                },
        };
 };

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I4602594e468322c8b6b8653eee33047ef9af9ebc
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
Gerrit-Reviewer: Arlolra <[email protected]>
Gerrit-Reviewer: C. Scott Ananian <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to