Modul:Lebensdaten
Die Dokumentation für dieses Modul kann unter Modul:Lebensdaten/Doku erstellt werden
--[=[ 2016-01-10
Lebensdaten
]=]
local TemplUtl;
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 furnishPersonendaten = function ( above )
-- Retrieve template parameters
-- Precondition:
-- above -- object; Title of current top page
-- TemplUtl has been loaded.
-- Postcondition:
-- Returns table with information, or false
local story = above:getContent();
local joint = TemplUtl.find( story, "Personendaten" );
local r;
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
return r;
end -- furnishPersonendaten()
local fire = function ( aim, frame, absent, assembly, allocate )
-- Personendaten auslesen
-- Precondition:
-- aim -- string; Modus "PD" oder "tot"
-- frame -- object
-- absent -- optional string; Titel Wartungskat für verstorben
-- assembly -- (PD) string; Titel der Lebensdaten-Muttervorlage
-- allocate -- (PD) optional string; GEBURTSORT
local skate = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:%s/%s]]";
local title = mw.title.getCurrentTitle();
local r, scream;
if title and title.namespace == 0 then
local lucky;
lucky, TemplUtl = pcall( require, "Module:TemplUtl" );
if type( TemplUtl ) == "table" then
local pd;
TemplUtl = TemplUtl.TemplUtl();
pd = furnishPersonendaten( title );
if pd then
if allocate and allocate ~= "" then
pd.GEBURTSORT = allocate;
end
local shift = pd.STERBEDATUM or pd.STERBEORT;
if aim == "PD" then
local sub = string.format( "%s/Lebensdaten",
assembly );
r = frame:expandTemplate{ title = sub, args = pd };
elseif aim == "tot" then
if shift then
r = shift;
end
end
if not shift then
local entity = mw.wikibase.getEntityObject();
if type( entity ) == "table" and
type( entity.claims ) == "table" then
local value = entity.claims.P570;
if type( value ) == "string" then
if mw.text.trim( value ) ~= "" then
if absent then
local scheme = "[[Category:%s]]";
scheme = string.format( scheme,
absent );
if r then
r = r .. scheme;
else
r = scheme;
end
else
scream = "Sterbedatum auf Wikidata";
end
end
end
end
end
else
scream = "Personendaten fehlen";
end
else
scream = "Modul TemplUtl fehlt";
end
else
r = "";
end
if scream then
if not r then
r = fault( scream );
end
r = r .. string.format( skate, assembly, scream );
end
return r;
end -- fire()
-- Export
local p = { };
p.test = function ( aim, args )
local r;
local stuff = args[ 1 ];
local starb = args.starb;
local seed = args.GEBURTSORT;
if stuff then
local frame = mw.getCurrentFrame();
r = fire( aim, frame, starb, stuff, seed );
end
return r;
end
p.PD = function ( frame )
local r;
local stuff = frame.args[ 1 ];
local starb = frame.args.starb;
local seed = frame.args.GEBURTSORT;
if stuff then
stuff = mw.text.trim( stuff );
r = fire( "PD", frame, starb, stuff, seed );
else
r = fault( "Lebensdaten.PD * Muttervorlage nicht angegeben" );
end
return r;
end
p.tot = function ( frame )
return fire( "tot", frame, frame.args.starb ) or "";
end
return p