Editing Module:Namespace detect/data
From MINR.ORG WIKI
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 13: | Line 13: | ||
end | end | ||
− | -- | + | 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. |
− | -- ensuring that default parameter names will always work. The cfg table | + | -- This allows wikis to customise parameter names in 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 | + | local argKeys = { |
− | + | main = {'main'}, | |
− | + | talk = {'talk'}, | |
− | + | other = {'other'}, | |
− | + | subjectns = {'subjectns'}, | |
− | + | demospace = {'demospace'}, | |
− | + | page = {'page'} | |
− | } | + | } |
− | + | for defaultKey, t in pairs(argKeys) do | |
− | + | local cfgValue = cfg[defaultKey] | |
− | + | local cfgValueType = type(cfgValue) | |
− | + | if cfgValueType == 'string' then | |
− | + | addKey(t, cfgValue, defaultKey) | |
− | + | elseif cfgValueType == 'table' then | |
− | for defaultKey, t in pairs(argKeys) do | + | for i, key in ipairs(cfgValue) do |
− | + | addKey(t, key, defaultKey) | |
− | + | end | |
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
+ | cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more. | ||
end | end | ||
− | + | return argKeys | |
end | end | ||
Line 57: | Line 53: | ||
-- } | -- } | ||
--]] | --]] | ||
+ | local ustringLower = mw.ustring.lower | ||
+ | local tinsert = table.insert | ||
+ | local subjectNamespaces = mw.site.subjectNamespaces | ||
+ | local talk = cfg.talk | ||
local mappings = {} | local mappings = {} | ||
− | + | mappings[ustringLower(subjectNamespaces[0].name)] = {cfg.main} | |
− | + | mappings[talk] = {talk} | |
− | + | for nsid, ns in pairs(subjectNamespaces) do | |
− | mappings[ | ||
− | for nsid, ns in pairs( | ||
if nsid ~= 0 then -- Exclude main namespace. | if nsid ~= 0 then -- Exclude main namespace. | ||
− | local nsname = | + | local nsname = ustringLower(ns.name) |
− | local canonicalName = | + | local canonicalName = ustringLower(ns.canonicalName) |
mappings[nsname] = {nsname} | mappings[nsname] = {nsname} | ||
if canonicalName ~= nsname then | if canonicalName ~= nsname then | ||
− | + | tinsert(mappings[nsname], canonicalName) | |
end | end | ||
for _, alias in ipairs(ns.aliases) do | for _, alias in ipairs(ns.aliases) do | ||
− | + | tinsert(mappings[nsname], ustringLower(alias)) | |
end | end | ||
end | end | ||
Line 79: | Line 77: | ||
return { | return { | ||
− | argKeys = | + | argKeys = getArgKeys(), |
cfg = cfg, | cfg = cfg, | ||
mappings = getParamMappings() | mappings = getParamMappings() | ||
} | } |