Modul:Namespace detect

Izvor: Hrvatska internetska enciklopedija
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