Modul:Namespace detect/data: Forskjell mellom sideversjoner

Fra Wikisida.no
Hopp til navigering Hopp til søk
(Created page with '---------------------------------------------------------------------------------------------------- -- Configuration da...')
 
m (Én sideversjon ble importert)
 
(24 mellomliggende versjoner av 9 brukere er ikke vist)
Linje 1: Linje 1:
----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Configuration data --
-- Namespace detect data --
-- This module holds data for [[Module:Namespace detect]] to be loaded per --
-- Language-specific parameter names can be set here. --
-- page, rather than per #invoke, for performance reasons. --
----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------

local cfg = {}
local cfg = require('Module:Namespace detect/config')

-- This parameter displays content for the main namespace:
local function addKey(t, key, defaultKey)
cfg.main = 'main'
if key ~= defaultKey then

t[#t + 1] = key
-- This parameter displays in talk namespaces:
end
cfg.talk = 'talk'
end

-- This parameter displays content for "other" namespaces (namespaces for which
-- Get a table of parameters to query for each default parameter name.
-- parameters have not been specified, or for when cfg.demospace is set to cfg.other):
-- This allows wikis to customise parameter names in the cfg table while
cfg.other = 'other'
-- ensuring that default parameter names will always work. The cfg table

-- values can be added as a string, or as an array of strings.
-- This parameter makes talk pages behave as though they are the corresponding subject namespace.
-- Note that this parameter is used with [[Module:Yesno]]. Edit that module to change
local defaultKeys = {
-- the default values of "yes", "no", etc.
'main',
cfg.subjectns = 'subjectns'
'talk',

'other',
-- This parameter sets a demonstration namespace:
'subjectns',
cfg.demospace = 'demospace'
'demospace',

'demopage'
-- This parameter sets a specific page to compare:
}
cfg.page = 'page'

local argKeys = {}
-- The header for the namespace column in the wikitable containing the list of possible subject-space parameters.
for i, defaultKey in ipairs(defaultKeys) do
cfg.wikitableNamespaceHeader = 'Namespace'
argKeys[defaultKey] = {defaultKey}

end
-- The header for the wikitable containing the list of possible subject-space parameters.
cfg.wikitableAliasesHeader = 'Aliases'
for defaultKey, t in pairs(argKeys) do

local cfgValue = cfg[defaultKey]
----------------------------------------------------------------------------------------------------
local cfgValueType = type(cfgValue)
-- End configuration data --
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()
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
-- Returns a table of how parameter names map to namespace names. The keys
lower case. The table entries are structured like this:
-- 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'},
-- [''] = {'main'},
...
-- ['wikipedia'] = {'wikipedia', 'project', 'wp'},
}
]]
-- ...
-- }
--]]
local mappings = {}
local mappings = {}
mappings[mw.ustring.lower(mw.site.namespaces[0].name)] = {cfg.main}
local mainNsName = mw.site.subjectNamespaces[0].name
mainNsName = mw.ustring.lower(mainNsName)
mappings[cfg.talk] = {cfg.talk}
mappings[mainNsName] = mw.clone(argKeys.main)
mappings['talk'] = mw.clone(argKeys.talk)
for nsid, ns in pairs(mw.site.subjectNamespaces) do
for nsid, ns in pairs(mw.site.subjectNamespaces) do
if nsid ~= 0 then -- Exclude main namespace.
if nsid ~= 0 then -- Exclude main namespace.
Linje 65: Linje 77:
return mappings
return mappings
end
end

return {
return { cfg = cfg, paramMappings = getParamMappings() }
argKeys = argKeys,
cfg = cfg,
mappings = getParamMappings()
}

Siste sideversjon per 5. feb. 2025 kl. 22:33


--------------------------------------------------------------------------------
--                          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 defaultKeys = {
	'main',
	'talk',
	'other',
	'subjectns',
	'demospace',
	'demopage'
}
 
local argKeys = {}
for i, defaultKey in ipairs(defaultKeys) do
	argKeys[defaultKey] = {defaultKey}
end
 
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()
}