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
