Module:Namespace detect/data: Difference between revisions

m
1 revision imported from loginwiki:Module:Namespace_detect/data: Updating template with latest edits from loginwiki
Enwikipedia>Mr. Stradivarius
(add a getArgKeys function, so that we can have multiple keys for each argument (helpful for localisation) and so that we only have to create that table once per page)
(username removed)
m (1 revision imported from loginwiki:Module:Namespace_detect/data: Updating template with latest edits from loginwiki)
 
(20 intermediate revisions by 14 users not shown)
Line 13:
end
 
-- ReturnsGet a table of parameters to query for each default parameter name.
local function getArgKeys()
-- This allows wikis to customise parameter names in the cfg table while
-- Returns a table of parameters to query for each default parameter name.
-- Thisensuring allowsthat wikis to customisedefault parameter names inwill thealways work. The cfg table while
-- values can be added as a string, or as an array of strings.
-- ensuring that default parameter names will always work. The cfg table
 
-- values can be added as a string, or as an array of strings.
local argKeysdefaultKeys = {
main = { 'main'},
talk = { 'talk'},
other = { 'other'},
subjectns = { 'subjectns'},
demospace = { 'demospace'},
'demopage'
page = {'page'}
}
 
for defaultKey, t in pairs(argKeys) do
local cfgValueargKeys = cfg[defaultKey]{}
for i, defaultKey in ipairs(defaultKeys) do
local cfgValueType = type(cfgValue)
argKeys[defaultKey] = {defaultKey}
if cfgValueType == 'string' then
end
addKey(t, cfgValue, defaultKey)
 
elseif cfgValueType == 'table' then
for idefaultKey, keyt in ipairspairs(cfgValueargKeys) do
addKey(t, local key,cfgValue = cfg[defaultKey)]
local cfgValueType = type(cfgValue)
end
if cfgValueType == 'string' then
addKey(t, cfgValue, defaultKey)
elseif cfgValueType == 'table' then
for i, key in ipairs(cfgValue) do
addKey(t, key, defaultKey)
end
cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.
end
cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.
return argKeys
end
 
Line 53 ⟶ 57:
-- }
--]]
local ustringLower = mw.ustring.lower
local tinsert = table.insert
local subjectNamespaces = mw.site.subjectNamespaces
local talk = cfg.talk
local mappings = {}
mappings[ustringLower(local mainNsName = mw.site.subjectNamespaces[0].name)] = {cfg.main}
mainNsName = mw.ustring.lower(mainNsName)
mappings[talk] = {talk}
mappings[mainNsName] = mw.clone(argKeys.main)
for nsid, ns in pairs(subjectNamespaces) do
mappings['talk'] = {mw.clone(argKeys.talk})
localfor subjectNamespacesnsid, =ns in pairs(mw.site.subjectNamespaces) do
if nsid ~= 0 then -- Exclude main namespace.
local nsname = ustringLowermw.ustring.lower(ns.name)
local canonicalName = ustringLowermw.ustring.lower(ns.canonicalName)
mappings[nsname] = {nsname}
if canonicalName ~= nsname then
tinserttable.insert(mappings[nsname], canonicalName)
end
for _, alias in ipairs(ns.aliases) do
tinserttable.insert(mappings[nsname], ustringLowermw.ustring.lower(alias))
end
end
Line 77 ⟶ 79:
 
return {
argKeys = getArgKeys()argKeys,
cfg = cfg,
mappings = getParamMappings()
(username removed)