Modul:Beruf: Unterschied zwischen den Versionen

Aus FürthWiki

388 Bytes hinzugefügt ,  Gestern um 09:47
getBerufFullpagename() zusätzlicher Check auf Weiterleitung
(setWoerterbuchAttr(fbdata) bereinigt)
(getBerufFullpagename() zusätzlicher Check auf Weiterleitung)
 
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
local fab = require("Modul:Faktenbox")
local fab = require("Modul:Faktenbox")
local smw = require("Modul:SMW")
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)
function p.Faktenbox(frame)
Zeile 10: Zeile 24:
-- mw.logObject(frame, "frame")
-- mw.logObject(frame, "frame")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.Faktenbox{pargs={Vorname="Hans",Nachname="Wurst",Geburtsort="Fürth",Geburtsdatum="2025/02/01"}}
-- =p.Faktenbox{pargs={}}
local t = ""
local t = ""


Zeile 17: Zeile 31:
fbdata.klasse = {"Beruf"}
fbdata.klasse = {"Beruf"}
fbdata.kategorie = {"Berufe"}
fbdata.kategorie = {"Berufe"}
fbdata.formular = "Beruf" -- ggf. "Beruf/Work"
if fbdata.namespace ~= "Kategorie" then
fbdata.formular = "Beruf" -- ggf. "Beruf/Work"
end
fbdata.positionscheck = false
fbdata.positionscheck = false
 
-- Wörterbuch-Einträge setzen: Einzahl/Mehrzahl, weiblich/männlich
-- Wörterbuch-Einträge setzen: Einzahl/Mehrzahl, weiblich/männlich
p.setWoerterbuchAttr(fbdata)
p.setWoerterbuchAttr(fbdata)


-- Tabs einsammeln und zusammenfügen
-- Tabs einsammeln und zusammenfügen
t = t .. fab.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
return t
end
function p.datenTab(fbdata)
-- mw.logObject(fbdata, "datenTab(fbdata)")
--[[ Konsolenzeile zum Debuggen:
fab=require("Modul:Faktenbox"); fbdata=fab.fbdata{pargs={Vorname="Hans",Geburtsdatum="2025/02/01"}};
fbdata.klasse={"Beruf"}; fbdata.kategorie={"Berufe"}; fbdata.fullpagename="Ludwig Erhard"; fbdata.subpagename="Ludwig Erhard";
print(p.datenTab(fbdata))
]]
local t = ""
-- Zusammenbau
t = t .. fab.zeileKategorieSeite(fbdata)
t = fab.table_header_footer(t)
t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)
-- Tab draus machen
t = fab.tab(t, "Daten")
-- mw.logObject(t, "t")
    return t
end
end


function p.setWoerterbuchAttr(fbdata)
function p.setWoerterbuchAttr(fbdata)
if not fbdata.attr.noattr then
for _, g in pairs(beruf_arg_names) do
for _, anzahl in ipairs{"Einzahl", "Mehrzahl"} do
for _, entry in pairs(g) do
for _, geschlecht in ipairs{"weiblich", "männlich", "divers"} do
local val = fbdata.pargs[entry]
local anzahl_geschlecht = anzahl .. " " .. geschlecht
wob.setEntry(entry, val, fbdata.attr.list)
local v = fbdata.pargs[anzahl_geschlecht] or ""
if v ~= "" then
mw.smw.subobject{
"Wörterbuch " .. anzahl_geschlecht,
["SubObjektTyp"] = "Wörterbuch Beruf",
["Bemerkung"] = anzahl,
["Geschlecht"] = geschlecht,
["BerufTemp"] = v}
end
end
end
end
end
end
Zeile 82: Zeile 70:
local berufe = str.splitAndStrip(berufe, delimiter or ";")
local berufe = str.splitAndStrip(berufe, delimiter or ";")
for _, b in ipairs(berufe) do
for _, b in ipairs(berufe) do
if t ~= "" then
t = str.appendWithComma(t, p.berufPageLink(b))
t = t .. ", "
end
t = t .. p.berufPageLink(b)
end
end
return t
return t
Zeile 96: Zeile 81:
function p.berufPageLink(beruf)
function p.berufPageLink(beruf)
local beruf_pagelink = ""
local beruf_pagelink = ""
local beruf_pagename = p.getBerufPagename(beruf)
local beruf_fullpagename = p.getBerufFullpagename(beruf)
if beruf_pagename ~= nil then
if beruf_fullpagename ~= nil then
beruf_pagelink = "[[" .. p.getBerufPagename(beruf) .. "|" .. beruf .. "]]"
beruf_pagelink = "[[:" .. beruf_fullpagename .. "|" .. beruf .. "]]"
else
else
beruf_pagelink = "[[" .. beruf .. "]]"
beruf_pagelink = "[[" .. beruf .. "]]"
Zeile 105: Zeile 90:
end
end


function p.getBerufPagename(beruf)
function p.getBerufFullpagename(beruf)
local beruf_pagename = mw.smw.ask{
local beruf_fullpagename = wob.getEntryPages(nil, beruf, "Berufe") -- egal, ob Einzahl/Mehrzahl oder Geschlecht
"[[:+]][[SubObjektTyp::Wörterbuch Beruf]]" ..
if beruf_fullpagename ~= nil then -- Berufs-Seite mit Wörterbuch gefunden
"[[BerufTemp::" .. beruf .. "]]",
beruf_fullpagename = beruf_fullpagename[1] -- immer nur 1. Ergebnis rückliefern
"?-has subobject.Seite#-",
elseif wik.pageExists(beruf) then -- Existierende Berufs-Seite ohne Wörterbuch gefunden
["mainlabel"] = "-",
local entries = wob.getEntry(beruf) -- Wenn diese aber Wörterbuch hat, aber in dem der Beruf
["limit"] = 1}
if entries == nil then -- nicht eingetragen ist, dann dürfte Weiterleitung sein
if beruf_pagename ~= nil then
beruf_fullpagename = beruf
beruf_pagename = beruf_pagename[1]["Seite"]
end
end
end
return beruf_pagename
return beruf_fullpagename
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
end


return p
return p