Zum Inhalt springen

Hilfe:AEWI/Modul AufEinWortSeiteKennung Sicherung 1

aus AufEinWort, der freien Forschung

bisherig ohne Kategorie für Kennung Modul:AufEinWortSeiteKennung

local p = {}
local u = mw.ustring

function p.kennung(frame)
    local args   = frame:getParent().args or {}
    local datum  = args.Erstellungsdatum or ""
    local nummer = args.Nummer   or "00"

    if datum == "" then
        return "00000000" .. nummer
    end

    -- 1. Map mit Umlaut→Ersatz
    local umlaut_map = {
        ["Ä"] = "Ae", ["ä"] = "ae",
        ["Ö"] = "Oe", ["ö"] = "oe",
        ["Ü"] = "Ue", ["ü"] = "ue",
        ["ß"] = "ss"
    }

    -- 2. Alle Ersetzungen nacheinander durchführen
    local normalized = datum
    for orig, repl in pairs(umlaut_map) do
        normalized = u.gsub(normalized, orig, repl)
    end

    -- 3. Datum parsen (UTF-8-aware)
    local tag, monat_name, jahr = u.match(normalized, "^(%d+)%.?%s*(%a+)%s*(%d+)$")
    if not (tag and monat_name and jahr) then
        return "Fehler: Ungültiges Datumsformat"
    end

    -- 4. Monats-Mapping inkl. "März"
    local monate = {
        Januar   = "01", Februar = "02",
        Maerz    = "03", ["März"] = "03",
        April    = "04", Mai     = "05",
        Juni     = "06", Juli    = "07",
        August   = "08", September = "09",
        Oktober  = "10", November = "11",
        Dezember = "12"
    }
    local m = monate[monat_name]
    if not m then
        return "Fehler: Ungültiger Monatsname"
    end

    -- 5. Tag zweistellig
    tag = string.format("%02d", tonumber(tag))
    return jahr .. m .. tag .. nummer
end

return p