Modul:Beruf: Unterschied zwischen den Versionen

getBerufFullpagename() zusätzlicher Check auf Weiterleitung
(fbdata.pargs["Dummy"] = "Dummy")
(getBerufFullpagename() zusätzlicher Check auf Weiterleitung)
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
local wik = require("Modul:Wiki")
local wik = require("Modul:Wiki")
local kla = require("Modul:Klasse")
local kla = require("Modul:Klasse")
local wob = require("Modul:Wörterbuch")


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


function p.Faktenbox(frame)
function p.Faktenbox(frame)
Zeile 34: Zeile 35:
end
end
fbdata.positionscheck = false
fbdata.positionscheck = false
fbdata.pargs["Dummy"] = "Dummy" -- um zu verhindern, dass Wartungsmeldung "Faktenbox ohne Formular-Daten" erscheint,
-- weil es erstmal viele Berufe ohne Formular-Daten gibt


-- Wörterbuch-Einträge setzen: Einzahl/Mehrzahl, weiblich/männlich
-- Wörterbuch-Einträge setzen: Einzahl/Mehrzahl, weiblich/männlich
Zeile 46: Zeile 45:


-- 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")
Zeile 54: Zeile 54:


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 = beruf_arg_names[geschlecht][anzahl]
wob.setEntry(entry, val, fbdata.attr.list)
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
end
Zeile 99: Zeile 91:


function p.getBerufFullpagename(beruf)
function p.getBerufFullpagename(beruf)
local beruf_fullpagename = 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
"[[Beruf::" .. 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_fullpagename ~= nil then
beruf_fullpagename = beruf
beruf_fullpagename = beruf_fullpagename[1]["Seite"]
end
end
end
return beruf_fullpagename
return beruf_fullpagename
Zeile 112: Zeile 104:


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