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

Reply via email to