Modul:SMW: Unterschied zwischen den Versionen

248 Bytes hinzugefügt ,  Gestern um 15:28
Ausgliederung restoreQueryEqual()
(ask() + Rückformen ["?..."]="..." zu "?...=...")
(Ausgliederung restoreQueryEqual())
 
Zeile 142: Zeile 142:
function p.Ask(frame)
function p.Ask(frame)
-- Kommandozeile zum Debuggen:
-- 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"}}
-- p.Ask{pargs={" a "," ? b "," ? c1 # c2 "," ? d1 # d2 = d3 "," ? e1 = e3 "," ? f = "," ? g # = ", " ? Ehemals ", " ? Ehemals = Test ", [" ? Ehemals2 "]=" Test2 ", " ? Ehemals # tick ", " ? Ehemals # tick = Test", [" ? Ehemals3 # tick3 "]=" Test3 ", " ? Ehemals # tick =", Klasse="Straße"}}
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local args = com.shallowcopy(pargs)
return p.ask(frame, pargs)
return p.ask(frame, args)
end
end


function p.ask(frame, args)
function p.ask(frame, args)
local t = ""
local t = ""
local args = com.shallowcopy(args)
-- defaults setzen
-- defaults setzen
if args.format == nil or args.format == "table" then
if args.format == nil or args.format == "table" then
Zeile 159: Zeile 159:
local klasse = args["Klasse"]
local klasse = args["Klasse"]
args["Klasse"] = nil
args["Klasse"] = nil
-- newlines und Leerzeichen an Anfang/Ende ausfiltern
-- Rückformen ["?..."]="..." zu "?...=..."
args = p.restoreQueryEqual(args)
-- newlines und Leerzeichen an Anfang/Ende abschneiden
for i, _ in ipairs(args) do
for i, _ in ipairs(args) do
args[i] = str.strip(string.gsub(args[i], "\n", ""))
args[i] = str.strip(string.gsub(args[i], "\n", ""))
end
end
-- Rückformen ["?..."]="..." zu "?...=..."
args_temp = com.shallowcopy(args)
for i, a in pairs(args) do
if string.sub(i, 1, 1) == "?" then
table.insert(args_temp, i .. "=" .. a) -- ["?..."]="..." durch "?...=..." ersetzen
args_temp[i] = nil
end
end
args = args_temp
-- query-args aufbereiten
-- query-args aufbereiten
for i, _ in ipairs(args) do
for i, _ in ipairs(args) do
Zeile 207: Zeile 200:
t = t .. frame:callParserFunction("#ask", args)
t = t .. frame:callParserFunction("#ask", args)
return t
return t
end
function p.restoreQueryEqual(args)
-- Rückformen ["?..."]="..." zu "?...=..."
local args_restored = {}
for a, v in pairs(args) do
if type(a) == "string" and string.sub(str.strip(a), 1, 1) == "?" then
table.insert(args_restored, a .. "=" .. v) -- ["?..."]="..." durch "?...=..." ersetzen
else
args_restored[a] = v
end
end
return args_restored
end
end


return p
return p