24.673
Bearbeitungen
(uniFilter() optimiert) |
(+ Ask()) |
||
| Zeile 2: | Zeile 2: | ||
local com = require("Modul:Common") | local com = require("Modul:Common") | ||
local dev = require("Modul:Development") | |||
local str = require("Modul:String") | local str = require("Modul:String") | ||
local wik = require("Modul:Wiki") | |||
local atr = require("Modul:Attribut") | |||
function p.GetValues(frame) | function p.GetValues(frame) | ||
| Zeile 135: | Zeile 138: | ||
end | end | ||
end | end | ||
end | |||
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 frame, pargs = dev.GetFrameAndParentArgs(frame) | |||
local args = wik.getArgs(pargs) -- filtert "" aus und macht shadow-copy | |||
-- Klasse extrahieren | |||
local klasse = args["Klasse"] | |||
args["Klasse"] = nil | |||
-- newlines und Leerzeichen an Anfang/Ende ausfiltern | |||
for i, _ in ipairs(args) do | |||
args[i] = str.strip(string.gsub(args[i], "\n", "")) | |||
end | |||
-- query-args aufbereiten | |||
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 | |||
-- defaults setzen | |||
-- args.class = args.class or "wikitable sortable" | |||
args.headers = args.headers or "plain" | |||
args.sep = args.sep or ", " | |||
-- nun #ask final aufrufen | |||
-- mw.logObject(args, "args") | |||
t = t .. frame:callParserFunction("#ask", args) | |||
return t | |||
end | end | ||
return p | return p | ||