24.595
Bearbeitungen
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 | ||
-- 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", "")) | ||
end | end | ||
-- query-args aufbereiten | |||
-- query-args aufbereiten | |||
for i, _ in ipairs(args) do | for i, _ in ipairs(args) do | ||
-- | 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 | ||
-- nun #ask final aufrufen | -- nun #ask final aufrufen | ||
t = t .. frame:callParserFunction("#ask", args) | t = t .. frame:callParserFunction("#ask", args) | ||