Arlolra has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/396096 )
Change subject: T65370: Use a map for namespaceIds ...................................................................... T65370: Use a map for namespaceIds Change-Id: I8e1681bc3a2f9e56f60113385ea5544a826b619a --- M lib/config/WikiConfig.js M lib/html2wt/LinkHandler.js M lib/wt2html/tt/LinkHandler.js M lib/wt2html/tt/ParserFunctions.js M tests/parserTests.utils.js 5 files changed, 11 insertions(+), 12 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid refs/changes/96/396096/1 diff --git a/lib/config/WikiConfig.js b/lib/config/WikiConfig.js index 318d2d8..a689117 100644 --- a/lib/config/WikiConfig.js +++ b/lib/config/WikiConfig.js @@ -128,7 +128,7 @@ }; // Seed localized namespace name to id mapping with canonicalNamespaces - this.namespaceIds = Object.create(this.canonicalNamespaces); + this.namespaceIds = JSUtils.mapObject(this.canonicalNamespaces); // The interwiki prefix this.iwp = prefix || ""; @@ -180,7 +180,7 @@ if (nsid === "14" && name['*'] !== "Category") { this._categoryRegexpSource += "|" + name['*']; } - this.namespaceIds[Util.normalizeNamespaceName(name['*'])] = Number(nsid); + this.namespaceIds.set(Util.normalizeNamespaceName(name['*']), Number(nsid)); if (name.canonical) { // XXX: is this b/c? this.canonicalNamespaces[Util.normalizeNamespaceName(name.canonical)] = @@ -198,7 +198,7 @@ var aliases = resultConf.namespacealiases; for (var ax = 0; ax < aliases.length; ax++) { - this.namespaceIds[Util.normalizeNamespaceName(aliases[ax]['*'])] = aliases[ax].id; + this.namespaceIds.set(Util.normalizeNamespaceName(aliases[ax]['*']), aliases[ax].id); if (aliases[ax].id === -1) { this._specialAliases.push(aliases[ax]['*']); } diff --git a/lib/html2wt/LinkHandler.js b/lib/html2wt/LinkHandler.js index 8dfccac..b9f4f06 100644 --- a/lib/html2wt/LinkHandler.js +++ b/lib/html2wt/LinkHandler.js @@ -172,7 +172,7 @@ if (dp.sa && dp.sa.namespace) { mediaPrefix = dp.sa.namespace; } else { - mediaPrefix = wiki.namespaceNames[wiki.namespaceIds.media]; + mediaPrefix = wiki.namespaceNames[wiki.namespaceIds.get('media')]; } // Unless edited, get original shadowed info for 'fileName' @@ -460,7 +460,7 @@ // it needs a ':' on front to distingish from a category link. var categoryMatch = linkTarget.match(/^([^:]+)[:]/); if (categoryMatch) { - var ns = wiki.namespaceIds[Util.normalizeNamespaceName(categoryMatch[1])]; + var ns = wiki.namespaceIds.get(Util.normalizeNamespaceName(categoryMatch[1])); if (ns === wiki.canonicalNamespaces.category) { // Check that the next node isn't a category link, // in which case we don't want the ':'. diff --git a/lib/wt2html/tt/LinkHandler.js b/lib/wt2html/tt/LinkHandler.js index f1de3a2..ff3ef7f 100644 --- a/lib/wt2html/tt/LinkHandler.js +++ b/lib/wt2html/tt/LinkHandler.js @@ -117,8 +117,7 @@ var nnn = Util.normalizeNamespaceName(nsPrefix.trim()); var interwikiInfo = env.conf.wiki.interwikiMap.get(nnn); // check for interwiki / language links - // SSS FIXME: Use a map for namespaceIds! - var ns = env.conf.wiki.namespaceIds.hasOwnProperty(nnn) ? env.conf.wiki.namespaceIds[nnn] : undefined; + var ns = env.conf.wiki.namespaceIds.get(nnn); // also check for url to protect against [[constructor:foo]] if (ns !== undefined) { info.title = env.makeTitleFromURLDecodedStr(title); diff --git a/lib/wt2html/tt/ParserFunctions.js b/lib/wt2html/tt/ParserFunctions.js index c72d53d..522784f 100644 --- a/lib/wt2html/tt/ParserFunctions.js +++ b/lib/wt2html/tt/ParserFunctions.js @@ -816,8 +816,8 @@ var env = this.env; var normalizedTarget = target.toLowerCase().replace(' ', '_'); - if (env.conf.wiki.namespaceIds[normalizedTarget]) { - nsid = env.conf.wiki.namespaceIds[normalizedTarget]; + if (env.conf.wiki.namespaceIds.has(normalizedTarget)) { + nsid = env.conf.wiki.namespaceIds.get(normalizedTarget); } else if (env.conf.wiki.canonicalNamespaces[normalizedTarget]) { nsid = env.conf.wiki.canonicalNamespaces[normalizedTarget]; } @@ -859,7 +859,7 @@ }; ParserFunctions.prototype.pf_namespacenumber = function(token, frame, cb, args) { var target = args[0].k.split(':').pop(); - cb({ tokens: [String(this.env.conf.wiki.namespaceIds[target])] }); + cb({ tokens: [String(this.env.conf.wiki.namespaceIds.get(target))] }); }; ParserFunctions.prototype.pf_pagename = function(token, frame, cb, args) { cb({ tokens: [this.env.page.name || ''] }); diff --git a/tests/parserTests.utils.js b/tests/parserTests.utils.js index 177cdc4..43bc950 100644 --- a/tests/parserTests.utils.js +++ b/tests/parserTests.utils.js @@ -869,11 +869,11 @@ var old = wikiConf.siteInfo.namespaces[nsid]; if (old) { // Id may already be defined; if so, clear it. if (old === name) { return; } // ParserTests does a lot redundantly. - wikiConf.namespaceIds[Util.normalizeNamespaceName(old['*'])] = undefined; + wikiConf.namespaceIds.delete(Util.normalizeNamespaceName(old['*'])); wikiConf.canonicalNamespaces[Util.normalizeNamespaceName(old.canonical ? old.canonical : old['*'])] = undefined; } wikiConf.namespaceNames[nsid] = name['*']; - wikiConf.namespaceIds[Util.normalizeNamespaceName(name['*'])] = Number(nsid); + wikiConf.namespaceIds.set(Util.normalizeNamespaceName(name['*']), Number(nsid)); wikiConf.canonicalNamespaces[Util.normalizeNamespaceName(name.canonical ? name.canonical : name['*'])] = Number(nsid); wikiConf.namespacesWithSubpages[nsid] = true; wikiConf.siteInfo.namespaces[nsid] = name; -- To view, visit https://gerrit.wikimedia.org/r/396096 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8e1681bc3a2f9e56f60113385ea5544a826b619a Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Arlolra <abrea...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits