Die Dokumentation für dieses Modul kann unter Modul:ADB/Doku erstellt werden

function getAuthorName(kuerzel)
    return mw.loadData("Modul:ADB/Autoren")[kuerzel]
end

local p = {}

function p.authorName(frame)
    return getAuthorName(frame.args[1]) or frame.args[2] or frame.args[1]
end

function p.formatAuthor(frame)
    local kuerzel = frame.args[1]
    local name = getAuthorName(kuerzel)
    if name == nil then
        return kuerzel
    end
    kuerzel = kuerzel:gsub("%[.+%]", "")
    local result = "[[" .. name .. "|"
    
    -- Punkt in den Link einschließen?
    local lastPart = kuerzel:match("(%S+)%.$")
    if lastPart ~= nil and (mw.ustring.len(lastPart) >= mw.ustring.len(name:gsub(" %(.+%)", ""):match("%S+$")) or name:match(lastPart .. "%-")) then
        result = result .. kuerzel:sub(1, -2) .. "]]."
    else
        result = result .. kuerzel .. "]]"
    end

    return result
end

function p.authorList(frame)
    local list = ""
    for i, kuerzel in pairs(frame.args) do
        if kuerzel ~= "" then
            if i > 1 then
                list = list .. ", "
            end
            list = list .. (getAuthorName(kuerzel) or kuerzel)
        end
    end
    return list
end

function p.listKuerzel(frame)
    local data = mw.loadData("Modul:ADB/Autoren")
    local list = ""
    for kuerzel, name in pairs(data) do
        if name == frame.args[1] then
            list = list .. "* ''" .. kuerzel .. "''\n"
        end
    end
    return list
end

return p