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. Es liefert (alles, was im Formular des Attributs eintragbar ist):
["Datentyp"]des Attributs["EhemalsAttribut"]= Wenn das Attribut mit einem anderen „Ehemals“-Attribut eine Kombi bildet. Z. B. Attribut:Abrissjahr ist kombiniert mit Attribut:Ehemals, somit ist „Ehemals“ als EhemalsAttribut bei Attribut:Abrissjahr eingetragen["Anzeigegenauigkeit"]= bei Datentyp Zahl["Einzahl"]bzw.["Mehrzahl"]= Anzeigetext Einzahl/Mehrzahl (z B. in Faktenboxen und Tabellen-Spaltenköpfen)["Delimiter"]= Trennzeichen, falls Formular-Wert des Attribut als Liste ausgewertet werden soll["FieldArgs"]= Argumente für{{{field|...}}}der Attribute des Formulars["Infotext"]= Text für Hilfe-Popup{{#info:...|note}}der Attribute des Formulars["Anzeigeformat"]= Anzeigeformat eines Attributs bei einer#ask-Abfrage. Entspricht dem Ausdruck hinter der Raute. Z. B.ja,neinbei{{#ask:...|?Ehemals#ja,nein|...}}.
attrText() / AttrText()
Gibt Anzeigetext eines Attributs zurück.
local p = {}
local dev = require("Modul:Development")
function p.getAttrAttributes(attr, klasse)
-- Kommandozeile zum Debuggen:
-- mw.logObject(p.getAttrAttributes("Ehemals"))
-- mw.logObject(p.getAttrAttributes("BietetKartenzahlung"))
local query = {"[[Attribut:" .. attr .. "]]",
"?Datentyp#-", "?EhemalsAttribut", "?Anzeigegenauigkeit",
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 query["Mehrzahl"] or attr
-- Sonderbehandlung Delimiter
if query["Delimiter"] == "Semikolon" then
query["Delimiter"] = ";"
elseif query["Delimiter"] == "keine Liste" or
(query["Delimiter"] == "Default/leer" and klasse == nil) then
query["Delimiter"] = nil
end
end
return query
end
function p.AttrText(frame) -- Attribut-Anzeige-Texte
local frame, _, args = dev.GetFrameAndParentArgs(frame)
local attr, klasse = args[1], args[2]
return p.attrText(attr, klasse)
end
function p.attrText(attr, klasse, mehrzahl)
local text
local query = p.getAttrAttributes(attr, klasse)
if query == nil then
text = attr
elseif mehrzahl then
text = query["Mehrzahl"]
else
text = query["Einzahl"]
end
return text
end
return p