https://gundam.wiki.cre.jp/w/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Namespace_detect/data&feed=atom&action=historyモジュール:Namespace detect/data - 版の履歴2024-03-28T14:49:52Zこのウィキのこのページに関する変更履歴MediaWiki 1.35.1https://gundam.wiki.cre.jp/w/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Namespace_detect/data&diff=8320&oldid=prev106.73.17.96: ページの作成:「-------------------------------------------------------------------------------- -- Namespace detect data -- -- This…」2018-09-11T04:44:31Z<p>ページの作成:「-------------------------------------------------------------------------------- -- Namespace detect data -- -- This…」</p>
<p><b>新規ページ</b></p><div>--------------------------------------------------------------------------------<br />
-- Namespace detect data --<br />
-- This module holds data for [[Module:Namespace detect]] to be loaded per --<br />
-- page, rather than per #invoke, for performance reasons. --<br />
--------------------------------------------------------------------------------<br />
<br />
local cfg = require('Module:Namespace detect/config')<br />
<br />
local function addKey(t, key, defaultKey)<br />
if key ~= defaultKey then<br />
t[#t + 1] = key<br />
end<br />
end<br />
<br />
-- Get a table of parameters to query for each default parameter name.<br />
-- This allows wikis to customise parameter names in the cfg table while<br />
-- ensuring that default parameter names will always work. The cfg table<br />
-- values can be added as a string, or as an array of strings.<br />
<br />
local defaultKeys = {<br />
'main',<br />
'talk',<br />
'other',<br />
'subjectns',<br />
'demospace',<br />
'demopage'<br />
}<br />
<br />
local argKeys = {}<br />
for i, defaultKey in ipairs(defaultKeys) do<br />
argKeys[defaultKey] = {defaultKey}<br />
end<br />
<br />
for defaultKey, t in pairs(argKeys) do<br />
local cfgValue = cfg[defaultKey]<br />
local cfgValueType = type(cfgValue)<br />
if cfgValueType == 'string' then<br />
addKey(t, cfgValue, defaultKey)<br />
elseif cfgValueType == 'table' then<br />
for i, key in ipairs(cfgValue) do<br />
addKey(t, key, defaultKey)<br />
end<br />
end<br />
cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.<br />
end<br />
<br />
local function getParamMappings()<br />
--[[<br />
-- Returns a table of how parameter names map to namespace names. The keys<br />
-- are the actual namespace names, in lower case, and the values are the<br />
-- possible parameter names for that namespace, also in lower case. The<br />
-- table entries are structured like this:<br />
-- {<br />
-- [''] = {'main'},<br />
-- ['wikipedia'] = {'wikipedia', 'project', 'wp'},<br />
-- ...<br />
-- }<br />
--]]<br />
local mappings = {}<br />
local mainNsName = mw.site.subjectNamespaces[0].name<br />
mainNsName = mw.ustring.lower(mainNsName)<br />
mappings[mainNsName] = mw.clone(argKeys.main)<br />
mappings['talk'] = mw.clone(argKeys.talk)<br />
for nsid, ns in pairs(mw.site.subjectNamespaces) do<br />
if nsid ~= 0 then -- Exclude main namespace.<br />
local nsname = mw.ustring.lower(ns.name)<br />
local canonicalName = mw.ustring.lower(ns.canonicalName)<br />
mappings[nsname] = {nsname}<br />
if canonicalName ~= nsname then<br />
table.insert(mappings[nsname], canonicalName)<br />
end<br />
for _, alias in ipairs(ns.aliases) do<br />
table.insert(mappings[nsname], mw.ustring.lower(alias))<br />
end<br />
end<br />
end<br />
return mappings<br />
end<br />
<br />
return {<br />
argKeys = argKeys,<br />
cfg = cfg,<br />
mappings = getParamMappings()<br />
}</div>106.73.17.96