|
|
| Line 1: |
Line 1: |
| -------------------------------------------------------------------------------- | | -- This Module is used for making templates based in the Lua language. |
| -- Namespace detect data --
| | -- See more details about Lua in [[w:Help:Lua]]. |
| -- This module holds data for [[Module:Namespace detect]] to be loaded per -- | | -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. |
| -- page, rather than per #invoke, for performance reasons. -- | | -- The next line imports from the [[w:c:dev:Global Lua Modules]]. |
| -------------------------------------------------------------------------------- | | local nsData = require('Dev:Namespace_detect/data') |
| | -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]] |
| | |
| | -- The imported Module is overwritten locally to include default configuration. |
| | -- For a more flexible experience, delete the page import |
| | -- and paste (and modify as you like) its contents into this page |
| | -- https://dev.fandom.com/wiki/Module:Namespace_detect/data |
|
| |
|
| local cfg = require('Module:Namespace detect/config')
| | -- The last line produces the output for the template |
| | | return nsData |
| 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()
| |
| }
| |
Documentation for this module may be found at wikipedia:Module:Namespace detect/data/doc
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports from the [[w:c:dev:Global Lua Modules]].
local nsData = require('Dev:Namespace_detect/data')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]]
-- The imported Module is overwritten locally to include default configuration.
-- For a more flexible experience, delete the page import
-- and paste (and modify as you like) its contents into this page
-- https://dev.fandom.com/wiki/Module:Namespace_detect/data
-- The last line produces the output for the template
return nsData