Modul:Beruf: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
(getBerufFullpagename() zusätzlicher Check auf Weiterleitung) |
||
| (26 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
local com = require("Modul:Common") | local com = require("Modul:Common") | ||
local str = require("Modul:String") | |||
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 9: | Zeile 24: | ||
-- mw.logObject(frame, "frame") | -- mw.logObject(frame, "frame") | ||
-- Konsolenzeile zum Debuggen: | -- Konsolenzeile zum Debuggen: | ||
-- =p.Faktenbox{pargs={ | -- =p.Faktenbox{pargs={}} | ||
local t = "" | local t = "" | ||
| Zeile 16: | 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) .. | 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") | |||
t = fbdata.frame:preprocess(t) | t = fbdata.frame:preprocess(t) | ||
return t | return t | ||
end | end | ||
function p. | 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 t = "" | ||
local berufe = str.splitAndStrip(berufe, delimiter or ";") | |||
for _, b in ipairs(berufe) do | |||
t = str.appendWithComma(t, p.berufPageLink(b)) | |||
t | 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 | end | ||
function p. | function p.getBerufFullpagename(beruf) | ||
local beruf_fullpagename = wob.getEntryPages(nil, beruf, "Berufe") -- egal, ob Einzahl/Mehrzahl oder Geschlecht | |||
if beruf_fullpagename ~= nil then -- Berufs-Seite mit Wörterbuch gefunden | |||
beruf_fullpagename = beruf_fullpagename[1] -- immer nur 1. Ergebnis rückliefern | |||
elseif wik.pageExists(beruf) then -- Existierende Berufs-Seite ohne Wörterbuch gefunden | |||
local entries = wob.getEntry(beruf) -- Wenn diese aber Wörterbuch hat, aber in dem der Beruf | |||
if entries == nil then -- nicht eingetragen ist, dann dürfte Weiterleitung sein | |||
beruf_fullpagename = beruf | |||
end | end | ||
end | end | ||
return beruf_fullpagename | |||
end | end | ||
function p. | 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 | end | ||
function p. | function p.Formular(frame) | ||
-- Kommandozeile zum Debuggen: | |||
-- frame=mw.getCurrentFrame(); print(p.Formular(frame)) | |||
local t = kla.Formular(frame, "Beruf") | |||
return t | |||
return | |||
end | end | ||
return p | return p | ||
Aktuelle Version vom 25. Februar 2026, 09:47 Uhr
Seiten-Übersicht
| Hauptseite | Unterseiten | ||
|---|---|---|---|
| Allgemein | |||
| Faktenbox | Vorlagen | ||
| Formulare |
|
||
| Module | |||
| Abfrage | Vorlagen |
| |
| Formulare |
| ||
| Sonstige | |||
Modul:Beruf
Dieses Modul:
- ...
Siehe auch
- Modul:Faktenbox
- Modul:Beruf
- Vorlage:Personen mit diesem Beruf
- Vorlage:Personenliste mit diesem Beruf
- Vorlage:Personen mit dieser Funktion
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") -- egal, ob Einzahl/Mehrzahl oder Geschlecht
if beruf_fullpagename ~= nil then -- Berufs-Seite mit Wörterbuch gefunden
beruf_fullpagename = beruf_fullpagename[1] -- immer nur 1. Ergebnis rückliefern
elseif wik.pageExists(beruf) then -- Existierende Berufs-Seite ohne Wörterbuch gefunden
local entries = wob.getEntry(beruf) -- Wenn diese aber Wörterbuch hat, aber in dem der Beruf
if entries == nil then -- nicht eingetragen ist, dann dürfte Weiterleitung sein
beruf_fullpagename = beruf
end
end
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
return p