Документация

Таблица данных модуля Namespace detect

----------------------------------------------------------------------------------                          Namespace detect data                             ---- This module holds data for [[Module:Namespace detect]] to be loaded per    ---- page, rather than per #invoke, for performance reasons.                    ----------------------------------------------------------------------------------local cfg = require('Module:Namespace detect/config')local function addKey(t, key, defaultKey)if key ~= defaultKey thent[#t + 1] = keyendend-- Get a table of parameters to query for each default parameter name.-- This allows wikis to customise parameter names in the cfg table while-- 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 defaultKeys = {'main','talk','other','subjectns','demospace','demopage'}local argKeys = {}for i, defaultKey in ipairs(defaultKeys) doargKeys[defaultKey] = {defaultKey}endfor defaultKey, t in pairs(argKeys) dolocal cfgValue = cfg[defaultKey]local cfgValueType = type(cfgValue)if cfgValueType == 'string' thenaddKey(t, cfgValue, defaultKey)elseif cfgValueType == 'table' thenfor i, key in ipairs(cfgValue) doaddKey(t, key, defaultKey)endendcfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.endlocal function getParamMappings()--[[-- Returns a table of how parameter names map to namespace names. The keys-- are the actual namespace names, in lower case, and the values are the-- possible parameter names for that namespace, also in lower case. The-- table entries are structured like this:-- {--   [''] = {'main'},--   ['wikipedia'] = {'wikipedia', 'project', 'wp'},--   ...-- }--]]local mappings = {}local mainNsName = mw.site.subjectNamespaces[0].namemainNsName = mw.ustring.lower(mainNsName)mappings[mainNsName] = mw.clone(argKeys.main)mappings['talk'] = mw.clone(argKeys.talk)for nsid, ns in pairs(mw.site.subjectNamespaces) doif nsid ~= 0 then -- Exclude main namespace.local nsname = mw.ustring.lower(ns.name)local canonicalName = mw.ustring.lower(ns.canonicalName)mappings[nsname] = {nsname}if canonicalName ~= nsname thentable.insert(mappings[nsname], canonicalName)endfor _, alias in ipairs(ns.aliases) dotable.insert(mappings[nsname], mw.ustring.lower(alias))endendendreturn mappingsendreturn {argKeys = argKeys,cfg = cfg,mappings = getParamMappings()}