Modul:Lebensdaten

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 25. November 2014 um 00:01 Uhr durch PerfektesChaos (Diskussion | Beiträge) (Setup). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


--[=[ 2014-11-20
Lebensdaten
]=]



local function fault( alert )
    -- Format message with class="error"
    --     alert  -- string, with message
    -- Returns message with markup
    return string.format( "<span class=\"error\">%s</span>", alert );
end -- fault()



local TemplUtl;



local furnishPersonendaten = function ()
    -- Retrieve template parameters
    -- Precondition:
    --     TemplUtl has been loaded.
    -- Postcondition:
    --     Returns table with information, or false
    local title = mw.title.getCurrentTitle();
    local r;
    if title then    -- maybe just creating
        local story = title:getContent();
        local joint = TemplUtl.find( story, "Personendaten" );
        if joint then
            story = mw.ustring.sub( story, joint );
            if story then
                r = { };
                r.GEBURTSDATUM = TemplUtl.fetch( story, "GEBURTSDATUM" );
                r.GEBURTSORT   = TemplUtl.fetch( story, "GEBURTSORT" );
                r.STERBEDATUM  = TemplUtl.fetch( story, "STERBEDATUM" );
                r.STERBEORT    = TemplUtl.fetch( story, "STERBEORT" );
            end
        end
    end
    return r;
end -- furnishPersonendaten()



local Personendaten = function ( assembly, frame )
    -- Personendaten auslesen
    -- Precondition:
    --     assembly  -- string; Titel der Lebensdaten-Muttervorlage
    --     frame     -- object
    local skate = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:%s/%s]]";
    local lucky, r, scream;
    lucky, TemplUtl = pcall( require, "Module:TemplUtl" );
    if type( TemplUtl ) == "table" then
        local pd;
        TemplUtl = TemplUtl.TemplUtl();
        pd       = furnishPersonendaten();
        if pd then
            local sub = string.format( "%s/Lebensdaten", assembly );
            r = frame:expandTemplate{ title = sub, args = pd };
            if not pd.STERBEDATUM then
                local entity = mw.wikibase.getEntityObject();
                if type( entity ) == "table" then
                    local value = entity.claims.P570;
                    if type( value ) == "string" then
                        if mw.text.trim( value ) ~= "" then
                            scream = "Sterbedatum auf Wikidata";
                        end
                    end
                end
            end
        else
            scream = "Personendaten fehlen";
        end
    else
        scream = "Modul TemplUtl fehlt";
    end
    if scream then
        if not r then
            r = fault( scream );
        end
        r = r .. string.format( skate, assembly, scream );
    end
    return r;
end -- Personendaten()



-- Export
local p = { };

p.test = function ( about, args )
    local r;
    if about == "PD" then
        local stuff = args[ 1 ];
        if stuff then
            local frame = mw.getCurrentFrame();
            r = Personendaten( stuff, frame );
        end
    end
    return r;
end

p.PD = function ( frame )
    local r;
    local stuff = frame.args[ 1 ];
    if stuff then
        r = Personendaten( stuff, frame );
    else
        r = fault( "Lebensdaten.PD * Muttervorlage nicht angegeben" );
    end
    return r;
end

return p