Modul:Namespace detect: razlika između inačica
Prijeđi na navigaciju
Prijeđi na pretraživanje
Stvorena nova stranica sa sadržajem: »--[[ -------------------------------------------------------------------------------- --...«. |
mNema sažetka uređivanja |
||
| Nisu prikazane 3 međuinačice | |||
| Redak 1: | Redak 1: | ||
-- This module implements namespace detection and handling. | |||
-- It is a direct port of the English Wikipedia version. | |||
-- This module implements | |||
-- | |||
local | local p = {} | ||
local yesno = require('Module:Yesno') | local yesno = require('Module:Yesno') | ||
local mArguments | local mArguments = require('Module:Arguments') | ||
local | local data = require('Module:Namespace detect/data') | ||
local | local cfg = require('Module:Namespace detect/config') | ||
local | 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 | local function getNamespace(page) | ||
local title = getPageObject(page) | |||
return title.namespace | |||
end | end | ||
local function | 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 | end | ||
function | 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 | end | ||
local function getParam(args, key) | |||
function | return args[key] or args[string.lower(key)] or args[string.upper(key)] | ||
end | end | ||
local function | local function getOutput(args, ns) | ||
local value = getParam(args, ns) | |||
if value ~= nil then | |||
return value | |||
end | |||
return getParam(args, 'other') | |||
end | end | ||
function p._main(args) | function p._main(args) | ||
local page = getParam(args, 'page') | |||
local ns = detectNamespace(page) | |||
return getOutput(args, ns) or '' | |||
end | end | ||
function p.main(frame) | 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 | 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) | 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 | end | ||
-- Return module table | |||
return p | return p | ||
Posljednja izmjena od 15. travanj 2026. u 10:28
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