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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits