Modul:Attribut
Aus FürthWiki
Seiten-Übersicht
| Hauptseite | Unterseiten | ||
|---|---|---|---|
| Allgemein | |||
| Faktenbox | Vorlagen | ||
| Formulare |
|
||
| Module | |||
| Abfrage | Vorlagen |
| |
| Formulare |
| ||
| Sonstige | |||
getAttrAttributes()
Gibt die Attribute eines Attributs zurück, z. B. Einzahl-/Mehrzahl-Anzeigetexte. Außerdem liefert es:
ValueQuery= Abfragestring z. B.?BietetKartenzahlung#tick=Kartenzahlung möglich
attrText() / AttrText()
Gibt Anzeigetext eines Attributs zurück.
AttrInfo()
Gibt die PopUp-Info zurück entsprechend {{#info:...|note}}.
Der Infotext stammt vom jeweiligen Attribut.
attrInfotextDelimiter()
Gibt Infotext und Delimiter zurück, um damit die PopUp-Info bauen zu können.
Siehe auch AttrInfo().
AttrField()
Noch nicht benutzt.
AttrValueQuery()
Noch nicht benutzt.
local p = {}
local dev = require("Modul:Development")
local str = require("Modul:String")
local htm = require("Modul:HTML")
local wob = require("Modul:Wörterbuch")
local lfd = require("Modul:LinkFormDatum")
local ber = require("Modul:Beruf")
function p.TableHeader(frame)
-- Kommandozeile zum Debuggen:
-- =p.TableHeader{args={"Beruf", "AbweichendeNamensform"}}
local args = {}
local klasse = frame.args["Klasse"]
for i, a in ipairs(frame.args) do
args[i] = wob.attrText(a, klasse)
end
return htm.tableHeader(args)
end
function p.TableLine(frame)
-- mw.log("TableLine(frame)")
-- Kommandozeile zum Debuggen:
-- =p.TableLine{pargs={"Test","Test3","Politiker","1. Januar 2024","2025-03-04,2026-02-03","2025,2026-02-03","Max","Mustermann","Hans Wurst"},args={nil, nil,"Beruf","Geburtsdatum","TodesdatumISO","Todesdatum","Vorname","Nachname","Person"}}
-- =p.TableLine{pargs={"p1","p2","p3","p4","p5","p6"},args={,"A2",,"A4"}}
local _, pargs, args = dev.GetFrameAndParentArgs(frame)
-- mw.logObject(pargs, "pargs")
-- mw.logObject(args, "args")
-- Zeile zusammenbauen
local line = {}
local td_args, vorname, nachname
for i, a in ipairs(pargs) do
local attr = args[i]
local val = a
-- Sonderbehandlung Beruf
if attr == "Beruf" then
val = ber.berufePageLinkListe(val, ",")
-- Sonderbehandlung Datum
-- Reihenfolge: GeburtsdatumISO|Geburtsdatum
-- bzw. TodesdatumISO|Todesdatum
elseif attr == "GeburtsdatumISO" or attr == "TodesdatumISO" or
attr == "FunktionVonISO" or attr == "FunktionBisISO" then
td_args = "data-sort-value=\"" .. val .. "\""
val = nil
elseif attr == "Geburtsdatum" or attr == "Todesdatum" or
attr == "FunktionVon" or attr == "FunktionBis" then
val = str.splitAndStrip(val, ",") -- als Liste behandeln
val_tmp = ""
for _, v in ipairs(val) do
val_tmp = str.appendWithComma(val_tmp, lfd.formatDate(v))
end
val = val_tmp
if val ~= "" and td_args ~= nil then
val = {val, td_args = td_args}
td_args = nil
end
-- Sonderbehandlung Person
-- Reihenfolge: Vorname|Nachname|Person
elseif attr == "Vorname" and args[i + 2] == "Person" then
vorname = val
val = nil
elseif attr == "Nachname" and args[i + 1] == "Person" then
nachname = val
val = nil
elseif attr == "Person" then
local name = vorname
if vorname ~= "" and nachname ~= "" then
name = name .. " "
end
name = name .. nachname
if name == "" then
name = val
end
val = "[[" .. val .."|" .. name .. "]]"
end
-- mw.logObject(val, "val")
table.insert(line, val)
end
local t = htm.tableLine(line)
-- mw.logObject(t, "t")
return t
end
function p.TableFooter(frame)
return htm.TableFooter(frame)
end
function p.getAttrAttributes(attr, klasse)
local query = {"[[Attribut:" .. attr .. "]]",
"?Datentyp#-", mainlabel = "-", limit = 1}
query = mw.smw.ask(query)
if query ~= nil then
query = query[1]
-- subobjects abfragen
local sub_query = {}
for _, k in ipairs{"Default", klasse} do
sub_query[k] = {"[[-has subobject::Attribut:" .. attr .. "]]" ..
"[[SubObjektTyp::AttributKlasse]]" ..
"[[KlassenName::" .. k .."]]",
"?Einzahl", "?Mehrzahl",
"?Delimiter", "?FieldArgs",
"?Infotext", "?Anzeigeformat",
mainlabel = "-", limit = 1}
sub_query[k] = mw.smw.ask(sub_query[k]) or {}
sub_query[k] = sub_query[k][1] or {}
end
-- defaults in klasse integrieren
if klasse ~= nil then
for a, _ in pairs(sub_query["Default"]) do
if a ~= "Einzahl" and a ~= "Mehrzahl" then -- Sonderbehandlung Einzahl/Mehrzahl ausschließen
sub_query[klasse][a] =
sub_query[klasse][a] or sub_query["Default"][a]
end
end
-- Sonderbehandlung Einzahl/Mehrzahl
if sub_query[klasse]["Einzahl"] == nil and
sub_query[klasse]["Mehrzahl"] == nil then
sub_query[klasse]["Einzahl"] = sub_query["Default"]["Einzahl"]
sub_query[klasse]["Mehrzahl"] = sub_query["Default"]["Mehrzahl"]
end
end
-- subobject in query integrieren
for a, v in pairs(sub_query[klasse or "Default"]) do
query[a] = v
end
-- Mehrzahl von Einzahl von Attribut-Name übernehmen
query["Mehrzahl"] = query["Mehrzahl"] or query["Einzahl"] or attr
query["Einzahl"] = query["Einzahl"] or attr
end
return query
end
function p.attrText(attr, klasse, mehrzahl)
local query, text = p.getAttrAttributes(attr, klasse)
if mehrzahl then
text = query["Mehrzahl"]
else
text = query["Einzahl"]
end
return text
end
return p