Modul:Attribut: Unterschied zwischen den Versionen
Aus FürthWiki
(+ getAttrAttributes(), attrText()) |
(+ AttrInfo(), attrInfotextDelimiter(), AttrField()) |
||
| (7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
local dev = require("Modul:Development") | local dev = require("Modul:Development") | ||
function p. | function p.getAttrAttributes(attr, klasse) | ||
-- Kommandozeile zum Debuggen: | -- Kommandozeile zum Debuggen: | ||
-- mw.logObject(p.getAttrAttributes("Ehemals")) | |||
-- mw.logObject(p.getAttrAttributes("BietetKartenzahlung")) | |||
-- mw. | |||
-- | |||
local query = {"[[Attribut:" .. attr .. "]]", | local query = {"[[Attribut:" .. attr .. "]]", | ||
"?Datentyp#-", mainlabel = "-", limit = 1} | "?Datentyp#-", mainlabel = "-", limit = 1} | ||
| Zeile 126: | Zeile 46: | ||
-- Mehrzahl von Einzahl von Attribut-Name übernehmen | -- Mehrzahl von Einzahl von Attribut-Name übernehmen | ||
query["Mehrzahl"] = query["Mehrzahl"] or query["Einzahl"] or attr | query["Mehrzahl"] = query["Mehrzahl"] or query["Einzahl"] or attr | ||
query["Einzahl"] = query["Einzahl"] or attr | query["Einzahl"] = query["Einzahl"] or query["Mehrzahl"] or attr | ||
-- Abfrage-String zusammenbauen | |||
query["ValueQuery"] = "?" .. attr | |||
if query["Anzeigeformat"] ~= nil then | |||
query["ValueQuery"] = | |||
query["ValueQuery"] .. "#" .. query["Anzeigeformat"] | |||
end | |||
if query["Einzahl"] ~= attr then | |||
query["ValueQuery"] = | |||
query["ValueQuery"] .. "=" .. query["Einzahl"] | |||
end | |||
end | end | ||
return query | 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 | end | ||
function p.attrText(attr, klasse, mehrzahl) | function p.attrText(attr, klasse, mehrzahl) | ||
local query | local text | ||
if mehrzahl then | local query = p.getAttrAttributes(attr, klasse) | ||
if query == nil then | |||
text = attr | |||
elseif mehrzahl then | |||
text = query["Mehrzahl"] | text = query["Mehrzahl"] | ||
else | else | ||
| Zeile 139: | Zeile 78: | ||
end | end | ||
return text | return text | ||
end | |||
function p.AttrInfo(frame) | |||
local frame, _, args = dev.GetFrameAndParentArgs(frame) | |||
local attr, klasse = args[1], args[2] | |||
local info, delimiter = p.attrInfotextDelimiter(attr, klasse) | |||
if info ~= nil then | |||
info = info .. "." | |||
if delimiter ~= nil then | |||
info = info .. " Mehrere Eintragungen möglich, zu trennen per " .. | |||
delimiter | |||
end | |||
info = string.gsub(info, "%.%.", ".") | |||
info = frame:callParserFunction("#info", info, "note") | |||
end | |||
return info | |||
end | |||
function p.attrInfotextDelimiter(attr, klasse) | |||
local text, delimiter | |||
local query = p.getAttrAttributes(attr, klasse) | |||
if query ~= nil then | |||
text = query["Infotext"] | |||
delimiter = query["Delimiter"] | |||
end | |||
return text, delimiter | |||
end | |||
function p.AttrField(frame) | |||
local t = "" | |||
local frame, _, args = dev.GetFrameAndParentArgs(frame) | |||
local attr, klasse = args[1], args[2] | |||
local query = p.getAttrAttributes(attr, klasse) | |||
t = t .. "{{{field|" .. attr | |||
if query ~= nil and query["FieldArgs"] ~= nil then | |||
t = t .. "|" .. query["FieldArgs"] | |||
end | |||
t = t .. "}}}" | |||
return t | |||
end | |||
function p.AttrValueQuery(frame) -- Attribut-Abfragestring | |||
-- Kommandozeile zum Debuggen: | |||
-- =p.AttrValueQuery{args={"BietetKartenzahlung"}} | |||
local attr = frame.args[1] | |||
local klasse = frame.args[2] | |||
local query = p.getAttrAttributes(attr, klasse) | |||
return query["ValueQuery"] | |||
end | end | ||
return p | return p | ||
Aktuelle Version vom 12. Februar 2026, 16:02 Uhr
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")
function p.getAttrAttributes(attr, klasse)
-- Kommandozeile zum Debuggen:
-- mw.logObject(p.getAttrAttributes("Ehemals"))
-- mw.logObject(p.getAttrAttributes("BietetKartenzahlung"))
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 query["Mehrzahl"] or attr
-- Abfrage-String zusammenbauen
query["ValueQuery"] = "?" .. attr
if query["Anzeigeformat"] ~= nil then
query["ValueQuery"] =
query["ValueQuery"] .. "#" .. query["Anzeigeformat"]
end
if query["Einzahl"] ~= attr then
query["ValueQuery"] =
query["ValueQuery"] .. "=" .. query["Einzahl"]
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
function p.AttrInfo(frame)
local frame, _, args = dev.GetFrameAndParentArgs(frame)
local attr, klasse = args[1], args[2]
local info, delimiter = p.attrInfotextDelimiter(attr, klasse)
if info ~= nil then
info = info .. "."
if delimiter ~= nil then
info = info .. " Mehrere Eintragungen möglich, zu trennen per " ..
delimiter
end
info = string.gsub(info, "%.%.", ".")
info = frame:callParserFunction("#info", info, "note")
end
return info
end
function p.attrInfotextDelimiter(attr, klasse)
local text, delimiter
local query = p.getAttrAttributes(attr, klasse)
if query ~= nil then
text = query["Infotext"]
delimiter = query["Delimiter"]
end
return text, delimiter
end
function p.AttrField(frame)
local t = ""
local frame, _, args = dev.GetFrameAndParentArgs(frame)
local attr, klasse = args[1], args[2]
local query = p.getAttrAttributes(attr, klasse)
t = t .. "{{{field|" .. attr
if query ~= nil and query["FieldArgs"] ~= nil then
t = t .. "|" .. query["FieldArgs"]
end
t = t .. "}}}"
return t
end
function p.AttrValueQuery(frame) -- Attribut-Abfragestring
-- Kommandozeile zum Debuggen:
-- =p.AttrValueQuery{args={"BietetKartenzahlung"}}
local attr = frame.args[1]
local klasse = frame.args[2]
local query = p.getAttrAttributes(attr, klasse)
return query["ValueQuery"]
end
return p