Modul:Beruf

Version vom 21. Februar 2026, 12:36 Uhr von HeikoBot (Diskussion | Beiträge) (Verwendung Wörterbuch-Funktionen setEntry(), getEntry(), getEntryPages())
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 wob = require("Modul:Wörterbuch")

local beruf_arg_names = {
	["männlich"] =
		{["Einzahl"] = "EinzahlGenerischMaskulinum",
		["Mehrzahl"] = "MehrzahlGenerischMaskulinum"},
	["weiblich"] =
		{["Einzahl"] = "EinzahlFemininum",
		["Mehrzahl"] = "MehrzahlFemininum"},
	["divers"] =
		{["Einzahl"] = "EinzahlDivers",
		["Mehrzahl"] = "MehrzahlDivers"}}

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)
	for _, g in pairs(beruf_arg_names) do
		for _, entry in pairs(g) do
			local val = fbdata.pargs[entry]
			wob.setEntry(entry, val, fbdata.attr.list)
		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 = wob.getEntryPages(nil, beruf, "Berufe") or {}	-- egal, ob Einzahl/Mehrzahl oder Geschlecht
	return beruf_fullpagename[1]												-- immer nur 1. Ergebnis rückliefern
end

function p.getBeruf(beruf_fullpagename, einzahl_mehrzahl, geschlecht)
	local entry = beruf_arg_names[geschlecht][einzahl_mehrzahl]
	local beruf = wob.getEntry(beruf_fullpagename, entry)
	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