Modul:Faktenbox: Unterschied zwischen den Versionen

Optimierung zeile()
(Änderung 754478 von HeikoBot (Diskussion) rückgängig gemacht.)
Markierung: Rückgängigmachung
(Optimierung zeile())
Zeile 9: Zeile 9:
local lfd = require("Modul:LinkFormDatum")
local lfd = require("Modul:LinkFormDatum")


local attr_text = {
local attr_text_anzeige = {
["TeilDesEnsembles"]="Teil des Ensembles",
["TeilDesEnsembles"]="Teil des Ensembles",
["TeilDesAreals"]="Teil des Areals",
["TeilDesAreals"]="Teil des Areals",
Zeile 50: Zeile 50:
p.bildTab(fbdata) ..
p.bildTab(fbdata) ..
p.kartenTab(fbdata) ..
p.kartenTab(fbdata) ..
p.datenTabUniversal(fbdata) ..
p.datenUniversalTab(fbdata) ..
"</tabs></div>"
"</tabs></div>"


Zeile 64: Zeile 64:
end
end


function p.datenTabUniversal(fbdata)
function p.datenUniversalTab(fbdata)
-- mw.log("datenTab(fbdata)")
-- mw.log("datenUniversalTab(fbdata)")
-- mw.logObject(fbdata)
-- mw.logObject(fbdata)
-- Konsolenzeile zum Debuggen (Achtung! Bug in Fehlerbereinigungskonsole! Kann nur 1x ausgeführt werden!):
-- Konsolenzeile zum Debuggen (Achtung! Bug in Fehlerbereinigungskonsole! Kann nur 1x ausgeführt werden!):
Zeile 311: Zeile 311:
local t = ""
local t = ""
for _, a in ipairs(attr_names) do
for _, a in ipairs(attr_names) do
t = t .. p.zeile{attr_name=a, attr_text=attr_text[a], val=fbdata.pargs[a]}
t = t .. p.zeile{fbdata=fbdata, attr_name=a}
end
end
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
Zeile 321: Zeile 321:
-- mw.logObject(args)
-- mw.logObject(args)
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.zeile{attr_name="n",attr_text="t",val="; v1 ; v2 (a(b))",val_prefix="pre",val_postfix="post",exclude_bracket_values=true}
-- =p.zeile{attr_name="Vorgänger",attr_text="t",fbdata={pargs={["Vorgänger"]="; v11 , V12 ; v13 (a(b))"}},attr_val="; v1 ; v2, v3 (a(b))",val_prefix="pre",val_postfix="post",exclude_bracket_values=true,val_is_list=true, delimiter=","}
local t = ""
local t = ""
if mw.smw.getPropertyType(args.attr_name) ~= nil then
-- Attribut-Name/Wert aufbereiten (splitten, in table umwandeln)
local val = args.val or ""
local attr_name = args.attr_name
if type(val) ~= "table" then
local attr_val = args.attr_val or args.val or args.fbdata.pargs[attr_name] or {}
val = str.splitAndStrip(val, ";")
if type(attr_val) ~= "table" then -- Liste in table umwandeln/zerteilen
if args.delimiter ~= nil or args.val_is_list == nil or args.val_is_list == true then -- default ist Trennen mit Semikolon
attr_val = str.splitAndStrip(attr_val, args.delimiter or ";")
else
attr_val = { attr_val }
end
end
-- Zeile zusammenbauen
if #attr_val > 0 then
-- Attribut-Text ermitteln und in Zeile übernehmen
local attr_text = args.attr_text or attr_text_anzeige[attr_name] or attr_name
if #attr_val > 1 then
attr_text = mez.mehrzahl(attr_text) -- Mehrzahl
end
t = t .. "<dt>" .. "[[Attribut:" .. attr_name .. "|" .. attr_text .. "]]</dt>"
-- Attribut-Werte in Zeile übernehmen
t = t .. "<dd>"
if args.val_prefix ~= nil then
t = t .. args.val_prefix .. " " -- Prefix
end
end
if #val > 0 then
for idx, val in ipairs(attr_val) do -- Werte-Liste
local attr_text
if idx > 1 then
if args.attr_text ~= nil then
t = t .. ", " -- Listen-Kommata
attr_text = args.attr_text
elseif #val > 1 then
attr_text = mez.mehrzahl(args.attr_name)
else
attr_text = args.attr_name
end
end
t = t .. "<dt>" .. "[[Attribut:" .. args.attr_name .. "|" .. attr_text .. "]]</dt><dd>"
local val_bracket = ""
if args.val_prefix ~= nil then
if com.isTrue(args.exclude_bracket_values) then -- Klammer-Text separieren (kein Attribut-Wert)
t = t .. args.val_prefix .. " "
local first_bracket = string.find(val, "%(")
end
local last_bracket = string.find(val, "%)", -1)
for i, v in ipairs(val) do
if first_bracket ~= nil and last_bracket ~= nil and first_bracket > 1 then
if i > 1 then
val_bracket = " " .. string.sub(val, first_bracket, last_bracket)
t = t .. ", "
val = str.strip(string.sub(val, 1, first_bracket - 1))
end
end
local v_bracket = ""
-- Klammer-Text separieren (kein Attribut-Wert)
if com.isTrue(args.exclude_bracket_values) then
local first_bracket = string.find(v, "%(")
local last_bracket = string.find(v, "%)", -1)
if first_bracket ~= nil and last_bracket ~= nil and first_bracket > 1 then
v_bracket = " " .. string.sub(v, first_bracket, last_bracket)
v = str.strip(string.sub(v, 1, first_bracket - 1))
end
end
t = t .. "[[" .. args.attr_name .. "::" .. v .. "]]" .. v_bracket
end
end
if args.val_postfix ~= nil then
t = t .. "[[" .. attr_name .. "::" .. val .. "]]" .. val_bracket
t = t .. " " .. args.val_postfix
end
end
if args.val_postfix ~= nil then
t = t .. "</dd>"
t = t .. " " .. args.val_postfix -- Postfix
end
end
t = t .. "</dd>"
end
end
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)