Modul:Attribut: Unterschied zwischen den Versionen

Aus FürthWiki

(fix attrText() nil-handling)
(fix attrText() nil-handling)
Zeile 52: Zeile 52:
function p.attrText(attr, klasse, mehrzahl)
function p.attrText(attr, klasse, mehrzahl)
local query, text = p.getAttrAttributes(attr, klasse)
local query, text = p.getAttrAttributes(attr, klasse)
if mehrzahl then
if query == nil then
text = query["Mehrzahl"] or attr
text = attr
elseif mehrzahl then
text = query["Mehrzahl"]
else
else
text = query["Einzahl"] or attr
text = query["Einzahl"]
end
end
return text
return text

Version vom 8. Februar 2026, 21:32 Uhr

Seiten-Übersicht

Zur Klasse Attribut gehörende Seiten:
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 = {}

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(frame)														-- Attribut-Anzeige-Texte
	return p.attrText(frame.args[1], frame.args[2])
end

function p.attrText(attr, klasse, mehrzahl)
	local query, text = 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