Modul:Namespace detect
Prijeđi na navigaciju
Prijeđi na pretraživanje
Lua error: Internal error: The interpreter exited with status 127.
Script error: Lua error: Internal error: The interpreter exited with status 127.
-- This module implements namespace detection and handling.
-- It is a direct port of the English Wikipedia version.
local p = {}
local yesno = require('Module:Yesno')
local mArguments = require('Module:Arguments')
local data = require('Module:Namespace detect/data')
local cfg = require('Module:Namespace detect/config')
local function getPageObject(page)
if type(page) == 'string' then
return mw.title.new(page)
elseif type(page) == 'table' and page.getContent then
return page
else
return mw.title.getCurrentTitle()
end
end
local function getNamespace(page)
local title = getPageObject(page)
return title.namespace
end
local function matchNamespace(ns, list)
if not list then
return false
end
for _, v in ipairs(list) do
if ns == v then
return true
end
end
return false
end
local function detectNamespace(page)
local ns = getNamespace(page)
for name, info in pairs(data) do
if matchNamespace(ns, info.namespaces) then
return name
end
end
return 'other'
end
local function getParam(args, key)
return args[key] or args[string.lower(key)] or args[string.upper(key)]
end
local function getOutput(args, ns)
local value = getParam(args, ns)
if value ~= nil then
return value
end
return getParam(args, 'other')
end
function p._main(args)
local page = getParam(args, 'page')
local ns = detectNamespace(page)
return getOutput(args, ns) or ''
end
function p.main(frame)
local args = mArguments.getArgs(frame)
return p._main(args)
end
-- Subject/talk namespace handling
local function subjectNamespace(page)
local title = getPageObject(page)
return title.subjectNsText
end
local function talkNamespace(page)
local title = getPageObject(page)
return title.talkNsText
end
function p.subjectns(frame)
local args = mArguments.getArgs(frame)
local page = getParam(args, 'page')
return subjectNamespace(page) or ''
end
function p.talkns(frame)
local args = mArguments.getArgs(frame)
local page = getParam(args, 'page')
return talkNamespace(page) or ''
end
-- Table output for documentation
function p.table(frame)
local args = mArguments.getArgs(frame)
local showTalk = yesno(args.talk, false)
local out = '{| class="wikitable"\n! Name !! Namespaces\n'
for name, info in pairs(data) do
out = out .. '|-\n| ' .. name .. ' || '
for i, ns in ipairs(info.namespaces) do
out = out .. ns
if i < #info.namespaces then
out = out .. ', '
end
end
out = out .. '\n'
end
out = out .. '|}'
return out
end
-- Return module table
return p