26.950
Bearbeitungen
Keine Bearbeitungszusammenfassung |
(getBerufFullpagename() zusätzlicher Check auf Weiterleitung) |
||
| (31 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) -- .. | ||
t = | -- kla.faktenboxDatenTab(fbdata) -- bislang kein DatenTab | ||
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 | |||
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 | ||