Modul:Attribut: Unterschied zwischen den Versionen

anfangsbuchstabeGross() von Tabellenkopf
(getAttrAttributes() + ValueQuery; + AttrValueQuery())
(anfangsbuchstabeGross() von Tabellenkopf)
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local p = {}
local p = {}
local dev = require("Modul:Development")
local str = require("Modul:String")


function p.getAttrAttributes(attr, klasse)
function p.getAttrAttributes(attr, klasse)
Zeile 6: Zeile 9:
-- mw.logObject(p.getAttrAttributes("BietetKartenzahlung"))
-- mw.logObject(p.getAttrAttributes("BietetKartenzahlung"))
local query = {"[[Attribut:" .. attr .. "]]",
local query = {"[[Attribut:" .. attr .. "]]",
"?Datentyp#-", mainlabel = "-", limit = 1}
"?Datentyp#-", "?EhemalsAttribut", "?Anzeigegenauigkeit",
mainlabel = "-", limit = 1}
query = mw.smw.ask(query)
query = mw.smw.ask(query)
if query ~= nil then
if query ~= nil then
Zeile 53: Zeile 57:
if query["Einzahl"] ~= attr then
if query["Einzahl"] ~= attr then
query["ValueQuery"] =
query["ValueQuery"] =
query["ValueQuery"] .. "=" .. query["Einzahl"]
query["ValueQuery"] .. "=" ..
str.anfangsbuchstabeGross(query["Einzahl"])
end
-- 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
end
end
Zeile 60: Zeile 72:


function p.AttrText(frame) -- Attribut-Anzeige-Texte
function p.AttrText(frame) -- Attribut-Anzeige-Texte
return p.attrText(frame.args[1], frame.args[2])
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, text = p.getAttrAttributes(attr, klasse)
local text
local query = p.getAttrAttributes(attr, klasse)
if query == nil then
if query == nil then
text = attr
text = attr
Zeile 73: Zeile 88:
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
end