Modul:Namespace detect/data: Perbedaan antara revisi
Tampilan
Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan |
k Membatalkan 1 suntingan oleh 86.173.55.194 (pembicaraan) diidentifikasi sebagai vandalisme ke revisi terakhir oleh Paladox2017. (TW) |
||
Baris 18: | Baris 18: | ||
-- values can be added as a string, or as an array of strings. |
-- values can be added as a string, or as an array of strings. |
||
local |
local argKeys = { |
||
'main', |
main = {'main'}, |
||
'talk', |
talk = {'talk'}, |
||
'other', |
other = {'other'}, |
||
'subjectns', |
subjectns = {'subjectns'}, |
||
'demospace', |
demospace = {'demospace'}, |
||
page = {'page'} |
|||
'demopage' |
|||
} |
} |
||
local argKeys = {} |
|||
for i, defaultKey in ipairs(defaultKeys) do |
|||
argKeys[defaultKey] = {defaultKey} |
|||
end |
|||
for defaultKey, t in pairs(argKeys) do |
for defaultKey, t in pairs(argKeys) do |
Revisi per 4 Mei 2014 23.09
Modul Lua ini digunakan pada 16.700.000+ halaman, atau sekira 430% dari keseluruhan halaman halaman. Untuk mencegah suntingan mengganggu skala besar dan beban peladen, setiap perubahan perlu diuji di subhalaman /bak pasir atau /kasus uji modul, atau bak pasir modul Anda. Perubahan yang diuji dapat ditambahkan ke halaman ini dalam satu suntingan. Pertimbangkan untuk mendiskusikan perubahan di halaman pembicaraan sebelum mengimplementasikannya. |
Modul ini dilindungi. Modul ini sangat mencolok yang digunakan oleh banyak halaman, atau sangat sering disubstitusikan. Karena vandalisme atau kesalahan akan mempengaruhi banyak halaman, dan suntingan kecil dapat memberi beban besar pada server, modul ini dilindungi dari penyuntingan. |
--------------------------------------------------------------------------------
-- 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 then
t[#t + 1] = key
end
end
-- 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 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 i, key in ipairs(cfgValue) do
addKey(t, key, defaultKey)
end
end
cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.
end
local 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].name
mainNsName = mw.ustring.lower(mainNsName)
mappings[mainNsName] = mw.clone(argKeys.main)
mappings['talk'] = mw.clone(argKeys.talk)
for nsid, ns in pairs(mw.site.subjectNamespaces) do
if 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 then
table.insert(mappings[nsname], canonicalName)
end
for _, alias in ipairs(ns.aliases) do
table.insert(mappings[nsname], mw.ustring.lower(alias))
end
end
end
return mappings
end
return {
argKeys = argKeys,
cfg = cfg,
mappings = getParamMappings()
}