Module:Namespace detect/data: Difference between revisions
From All Skies Encyclopaedia
imported>Jackmcbarn  (name return values)  | 
				imported>Mr. Stradivarius   (use a dedicated config page - Module:Namespace detect/config - for configuration data, and try and reduce unnecessary table lookups in the getParamMappings function)  | 
				||
| Line 1: | Line 1: | ||
--------------------------------------------------------------------------------  | 
|||
--                             | 
  --                          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:  | 
  |||
| ⚫ | |||
-- This parameter displays in talk namespaces:  | 
  |||
| ⚫ | |||
-- This parameter displays content for "other" namespaces (namespaces for which  | 
  |||
-- parameters have not been specified, or for when cfg.demospace is set to cfg.other):  | 
  |||
cfg.other = 'other'  | 
  |||
-- 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  | 
  |||
-- the default values of "yes", "no", etc.  | 
  |||
cfg.subjectns = 'subjectns'  | 
  |||
-- This parameter sets a demonstration namespace:  | 
  |||
cfg.demospace = 'demospace'  | 
  |||
-- This parameter sets a specific page to compare:  | 
  |||
cfg.page = 'page'  | 
  |||
-- The header for the namespace column in the wikitable containing the list of possible subject-space parameters.  | 
  |||
cfg.wikitableNamespaceHeader = 'Namespace'  | 
  |||
-- The header for the wikitable containing the list of possible subject-space parameters.  | 
  |||
cfg.wikitableAliasesHeader = 'Aliases'  | 
  |||
----------------------------------------------------------------------------------------------------  | 
  |||
--                                       End configuration data                                   --  | 
  |||
----------------------------------------------------------------------------------------------------  | 
  |||
local function getParamMappings()  | 
  local function getParamMappings()  | 
||
	--[[  | 
|||
	--[[ Returns a table of how parameter names map to namespace names. The keys are the actual namespace   | 
  |||
	-- 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'},  | 
  |||
	-- {  | 
|||
| ⚫ | |||
| ⚫ | |||
			...  | 
  |||
| ⚫ | |||
		}  | 
  |||
	--   ...  | 
|||
	-- }  | 
|||
	--]]  | 
|||
	local ustringLower = mw.ustring.lower  | 
|||
	local tinsert = table.insert  | 
|||
	local subjectNamespaces = mw.site.subjectNamespaces  | 
|||
| ⚫ | |||
	local mappings = {}  | 
  	local mappings = {}  | 
||
	mappings[  | 
  	mappings[ustringLower(subjectNamespaces[0].name)] = {cfg.main}  | 
||
	mappings[  | 
  	mappings[talk] = {talk}  | 
||
	for nsid, ns in pairs(  | 
  	for nsid, ns in pairs(subjectNamespaces) do  | 
||
		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 66: | Line 42: | ||
end  | 
  end  | 
||
return {  | 
  return {cfg = cfg, mappings = getParamMappings()}  | 
||
Revision as of 03:13, 21 March 2014
Documentation for this module may be created at Module:Namespace detect/data/doc
--------------------------------------------------------------------------------
--                          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 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 ustringLower = mw.ustring.lower
	local tinsert = table.insert
	local subjectNamespaces = mw.site.subjectNamespaces
	local talk = cfg.talk
	local mappings = {}
	mappings[ustringLower(subjectNamespaces[0].name)] = {cfg.main}
	mappings[talk] = {talk}
	for nsid, ns in pairs(subjectNamespaces) do
		if nsid ~= 0 then -- Exclude main namespace.
			local nsname = ustringLower(ns.name)
			local canonicalName = ustringLower(ns.canonicalName)
			mappings[nsname] = {nsname}
			if canonicalName ~= nsname then
				tinsert(mappings[nsname], canonicalName)
			end
			for _, alias in ipairs(ns.aliases) do
				tinsert(mappings[nsname], ustringLower(alias))
			end
		end
	end
	return mappings
end
return {cfg = cfg, mappings = getParamMappings()}




