Modul:SMW/Work: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 141: Zeile 141:


function p.ask(frame)
function p.ask(frame)
-- Kommandozeile zum Debuggen:
-- p.ask{pargs={" a "," ? b "," ? c1 # c2 "," ? d1 # d2 = d3 "," ? e1 = e3 ", " ? Ehemals ", " ? Ehemals = Test ", " ? Ehemals # tick ", " ? Ehemals # tick = Test", " ? Ehemals # tick =", Klasse="Straße"}}
local t = ""
local t = ""
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local args = wik.getArgs(pargs) -- filtert "" aus und macht shadow-copy
local args = wik.getArgs(pargs) -- filtert "" aus und macht shadow-copy
mw.logObject(args, "args")
-- Klasse extrahieren
-- Klasse extrahieren
local klasse = args["Klasse"]
local klasse = args["Klasse"]
args["Klasse"] = nil
args["Klasse"] = nil
-- newlines ausfiltern
-- newlines und Leerzeichen an Anfang/Ende ausfiltern
for i, _ in ipairs(args) do
for i, _ in ipairs(args) do
args[i] = string.gsub(args[i], "\n", "")
args[i] = str.strip(string.gsub(args[i], "\n", ""))
args[i] = string.gsub(args[i], "\r", "")
end
end
mw.logObject(args, "args")
-- query-args aufbereiten
-- query-args aufbereiten mit Attribut-Vorgaben
for i, _ in ipairs(args) do
for i, _ in ipairs(args) do
-- if string.sub
if string.sub(args[i], 1, 1) == "?" then
-- aufteilen in  ?attr#format=attr_text
local a = string.sub(args[i], 2)
a = str.split(a, "=")
local attr_text = a[2]
a = str.split(a[1], "#")
local format = a[2]
local attr = str.strip(a[1])
-- Attribute des Attributs attr abfragen
attr_attr = atr.getAttrAttributes(attr, klasse)
if attr_attr ~= nil then
format = format or attr_attr["Anzeigeformat"] -- Anzeigeformat übernehmen
attr_text = attr_text or attr_attr["Einzahl"] -- Anzeigetext Einzahl übernehmen
end
-- jetzt wieder alles zusammenbauen ?...#...=...
local query = "?" .. attr
if format ~= nil then
query = query .. "#" .. str.strip(format)
end
if attr_text ~= nil then
query = query .. "=" .. str.strip(attr_text)
end
args[i] = query
end
end
end
mw.logObject(args, "args")
-- nun #ask final aufrufen
-- nun #ask final aufrufen
t = t .. frame:callParserFunction("#ask", args)
t = t .. frame:callParserFunction("#ask", args)