From Wikipedia, the free encyclopedia

--------------------------------------------------------------------------------

--                          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

	argKeysdefaultKey = {defaultKey}

end



for defaultKey, t in pairs(argKeys) do

	local cfgValue = cfgdefaultKey

	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

	cfgdefaultKey = 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.subjectNamespaces0].name

	mainNsName = mw.ustring.lower(mainNsName)

	mappingsmainNsName = 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)

			mappingsnsname = {nsname}

			if canonicalName ~= nsname then

				table.insert(mappingsnsname], canonicalName)

			end

			for _, alias in ipairs(ns.aliases) do

				table.insert(mappingsnsname], mw.ustring.lower(alias))

			end

		end

	end

	return mappings

end



return {

	argKeys = argKeys,

	cfg = cfg,

	mappings = getParamMappings()

}
From Wikipedia, the free encyclopedia

--------------------------------------------------------------------------------

--                          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

	argKeysdefaultKey = {defaultKey}

end



for defaultKey, t in pairs(argKeys) do

	local cfgValue = cfgdefaultKey

	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

	cfgdefaultKey = 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.subjectNamespaces0].name

	mainNsName = mw.ustring.lower(mainNsName)

	mappingsmainNsName = 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)

			mappingsnsname = {nsname}

			if canonicalName ~= nsname then

				table.insert(mappingsnsname], canonicalName)

			end

			for _, alias in ipairs(ns.aliases) do

				table.insert(mappingsnsname], mw.ustring.lower(alias))

			end

		end

	end

	return mappings

end



return {

	argKeys = argKeys,

	cfg = cfg,

	mappings = getParamMappings()

}

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook