Modul:Beruf: Unterschied zwischen den Versionen

Aus FürthWiki

(str.appendWithComma)
(fbdata.pargs["Bild"] = "Stadtwappen.svg")
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
local smw = require("Modul:SMW")
local smw = require("Modul:SMW")
local wik = require("Modul:Wiki")
local wik = require("Modul:Wiki")
local kla = require("Modul:Klasse")
local beruf_arg_names = {
["männlich"] =
{["Einzahl"] = "Einzahl generisch Maskulinum",
["Mehrzahl"] = "Mehrzahl Maskulinum"},
["weiblich"] =
{["Einzahl"] = "Einzahl Femininum",
["Mehrzahl"] = "Mehrzahl Femininum"},
["divers"] =
{["Einzahl"] = "Einzahl divers",
["Mehrzahl"] = "Mehrzahl divers"}}


function p.Faktenbox(frame)
function p.Faktenbox(frame)
Zeile 27: Zeile 39:


-- Tabs einsammeln und zusammenfügen
-- Tabs einsammeln und zusammenfügen
t = t .. p.bildTab(fbdata) .. p.datenTab(fbdata)
t = t .. fab.bildTab(fbdata) -- ..
-- kla.faktenboxDatenTab(fbdata) -- bislang kein DatenTab
t = fab.factbox_header_footer(t)
t = fab.factbox_header_footer(t)


-- Sonstige gemeinsame Dinge anfügen (Klasse, Formular, Kategorien, Wartung, ...)
-- Sonstige gemeinsame Dinge anfügen (Klasse, Formular, Kategorien, Wartung, ...)
t = t .. fab.postprocess(fbdata)
fbdata.pargs["Bild"] = "Stadtwappen.svg" -- um zu verhindern, dass Wartungsmeldungen erfolgen,
t = t .. fab.postprocess(fbdata) -- weil es erstmal viele Berufe ohne Formular-Daten gibt
-- Pre-Processing
-- Pre-Processing
-- mw.logObject(t, "t")
-- mw.logObject(t, "t")
t = fbdata.frame:preprocess(t)
t = fbdata.frame:preprocess(t)
return t
end
function p.datenTab(fbdata)
-- mw.log("datenTab(fbdata)")
-- mw.logObject(fbdata.pargs, "fbdata.pargs")
local t = ""
-- Zusammenbau
-- hier können noch weitere Zeilen davor gesetzt werden
if t ~= "" then
t = fab.zeileKategorieSeite(fbdata) .. t
t = fab.table_header_footer(t)
t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)
end
-- Tab draus machen
t = fab.tab(t, "Daten")
-- mw.logObject(t, "t")
    return t
end
function p.bildTab(fbdata)
-- mw.log("bildTab(fbdata)")
-- mw.logObject(fbdata.pargs, "fbdata.pargs")
local t = ""
local bild = fbdata.pargs["Bild"]
if not com.isEmpty(bild) and wik.pageExists("Datei:" .. bild) then
t = t .. "{| class = \"factbox_imagetable\" border = \"0\" cellpadding = \"0\" cellspacing = \"0\" width = \"100%\"\n"
t = t .. "|-\n"
t = t .. "|[[Datei:" .. bild .. "|768px]]\n"
t = t .. "|}"
smw.addAttrToList(fbdata.attr.list, "Bild", "Datei:" .. bild)
end
-- Tab draus machen
t = fab.tab(t, "Bild")
-- mw.logObject(t, "t")
return t
return t
end
end
Zeile 79: Zeile 56:
for _, anzahl in ipairs{"Einzahl", "Mehrzahl"} do
for _, anzahl in ipairs{"Einzahl", "Mehrzahl"} do
for _, geschlecht in ipairs{"weiblich", "männlich", "divers"} do
for _, geschlecht in ipairs{"weiblich", "männlich", "divers"} do
local anzahl_geschlecht = anzahl .. " " .. geschlecht
local anzahl_geschlecht = beruf_arg_names[geschlecht][anzahl]
local v = fbdata.pargs[anzahl_geschlecht] or ""
local v = fbdata.pargs["Berufsbezeichnung " .. anzahl_geschlecht] or ""
if v ~= "" then
if v ~= "" then
mw.smw.subobject{
v = {"Wörterbuch " .. anzahl_geschlecht,
"Wörterbuch " .. anzahl_geschlecht,
["SubObjektTyp"] = "Wörterbuch Beruf", ["Beruf"] = v,
["SubObjektTyp"] = "Wörterbuch Beruf",
["Bemerkung"] = anzahl, ["Geschlecht"] = geschlecht}
["Bemerkung"] = anzahl,
mw.smw.subobject(v)
["Geschlecht"] = geschlecht,
["Beruf"] = v}
end
end
end
end
Zeile 144: Zeile 119:
end
end
return beruf
return beruf
end
function p.Formular(frame)
-- Kommandozeile zum Debuggen:
-- frame=mw.getCurrentFrame(); print(p.Formular(frame))
local t = kla.Formular(frame, "Beruf")
return t
end
end


return p
return p

Aktuelle Version vom 20. Februar 2026, 16:30 Uhr

local p = {}

local com = require("Modul:Common")
local str = require("Modul:String")
local fab = require("Modul:Faktenbox")
local smw = require("Modul:SMW")
local wik = require("Modul:Wiki")
local kla = require("Modul:Klasse")

local beruf_arg_names = {
	["männlich"] =
		{["Einzahl"] = "Einzahl generisch Maskulinum",
		["Mehrzahl"] = "Mehrzahl Maskulinum"},
	["weiblich"] =
		{["Einzahl"] = "Einzahl Femininum",
		["Mehrzahl"] = "Mehrzahl Femininum"},
	["divers"] =
		{["Einzahl"] = "Einzahl divers",
		["Mehrzahl"] = "Mehrzahl divers"}}

function p.Faktenbox(frame)
--	mw.log("Faktenbox(frame)")
--	mw.logObject(frame, "frame")
	-- Konsolenzeile zum Debuggen:
	-- =p.Faktenbox{pargs={}}
	local t = ""

	-- Basis-Faktenbox-Daten (Klasse/Kategorie/Formular)
	local fbdata = fab.getFbdata(frame)
	fbdata.klasse = {"Beruf"}
	fbdata.kategorie = {"Berufe"}
	if fbdata.namespace ~= "Kategorie" then
		fbdata.formular = "Beruf" -- ggf. "Beruf/Work"
	end
	fbdata.positionscheck = false

	-- Wörterbuch-Einträge setzen: Einzahl/Mehrzahl, weiblich/männlich
	p.setWoerterbuchAttr(fbdata)

	-- Tabs einsammeln und zusammenfügen
	t = t .. fab.bildTab(fbdata) -- ..
		-- kla.faktenboxDatenTab(fbdata)										-- bislang kein DatenTab
	t = fab.factbox_header_footer(t)

	-- Sonstige gemeinsame Dinge anfügen (Klasse, Formular, Kategorien, Wartung, ...)
	fbdata.pargs["Bild"] = "Stadtwappen.svg"									-- um zu verhindern, dass Wartungsmeldungen erfolgen,
	t = t .. fab.postprocess(fbdata)											-- weil es erstmal viele Berufe ohne Formular-Daten gibt
	-- Pre-Processing
--	mw.logObject(t, "t")
	t = fbdata.frame:preprocess(t)
	return t
end

function p.setWoerterbuchAttr(fbdata)
	if not fbdata.attr.noattr then
		for _, anzahl in ipairs{"Einzahl", "Mehrzahl"} do
			for _, geschlecht in ipairs{"weiblich", "männlich", "divers"} do
				local anzahl_geschlecht = beruf_arg_names[geschlecht][anzahl]
				local v = fbdata.pargs["Berufsbezeichnung " .. anzahl_geschlecht] or ""
				if v ~= "" then
					v = {"Wörterbuch " .. anzahl_geschlecht,
						["SubObjektTyp"] = "Wörterbuch Beruf", ["Beruf"] = v,
						["Bemerkung"] = anzahl, ["Geschlecht"] = geschlecht}
					mw.smw.subobject(v)
				end
			end
		end
	end
end

function p.BerufePageLinkListe(frame)
	return p.berufePageLinkListe(frame.args[1], frame.args[2])
end

function p.berufePageLinkListe(berufe, delimiter)
	local t = ""
	local berufe = str.splitAndStrip(berufe, delimiter or ";")
	for _, b in ipairs(berufe) do
		t = str.appendWithComma(t, p.berufPageLink(b))
	end
	return t
end

function p.BerufPageLink(frame)
	return p.berufPageLink(frame.args[1])
end

function p.berufPageLink(beruf)
	local beruf_pagelink = ""
	local beruf_fullpagename = p.getBerufFullpagename(beruf)
	if beruf_fullpagename ~= nil then
		beruf_pagelink = "[[:" .. beruf_fullpagename .. "|" .. beruf .. "]]"
	else
		beruf_pagelink = "[[" .. beruf .. "]]"
	end
	return beruf_pagelink
end

function p.getBerufFullpagename(beruf)
	local beruf_fullpagename = mw.smw.ask{
		"[[SubObjektTyp::Wörterbuch Beruf]]" ..
		"[[Beruf::" .. beruf .. "]]",
		"?-has subobject.Seite#-",
		["mainlabel"] = "-",
		["limit"] = 1}
	if beruf_fullpagename ~= nil then
		beruf_fullpagename = beruf_fullpagename[1]["Seite"]
	end
	return beruf_fullpagename
end

function p.getBeruf(beruf_fullpagename, einzahl_mehrzahl, geschlecht)
	local selector = "[[Bemerkung::" .. einzahl_mehrzahl .. "]]" ..
		"[[-has subobject::" .. beruf_fullpagename .. "]]" ..
		"[[Geschlecht::" .. geschlecht .. "]]"
	local beruf = mw.smw.ask{selector, "?Beruf", ["limit"] = 1}
	if beruf ~= nil then
		beruf = beruf[1]["Beruf"]
	end
	return beruf
end

function p.Formular(frame)
	-- Kommandozeile zum Debuggen:
	-- frame=mw.getCurrentFrame(); print(p.Formular(frame))
	local t = kla.Formular(frame, "Beruf")
	return t
end

return p