Modul:AufEinWort Wortbildung
Erscheinungsbild
Die Dokumentation für dieses Modul kann unter Modul:AufEinWort Wortbildung/Doku erstellt werden
-- Modul:AufEinWortWortbildung
local p = {}
local function trim(s)
return (tostring(s or ""):gsub("^%s+", ""):gsub("%s+$", ""))
end
-- Entfernt nur führende/abschließende Bindestriche für Sortierschlüssel
local function sortkey(token)
token = trim(token)
token = token:gsub("^%-+", ""):gsub("%-+$", "")
return token
end
-- Für Property-Werte: führende/abschließende Bindestriche entfernen
local function cleanValue(token)
return sortkey(token)
end
-- Abkürzungen ↔ Langform
local mapWortartToAbbr = {
["Dingwort"] = "Dgw.",
["Dingname"] = "Dgn."
}
local mapGeschlechtToAbbr = {
["weiblich"] = "wl.",
["männlich"] = "ml.",
["sachlich"] = "sl."
}
local mapSprachToAbbr = {
["Deutsch"] = "deu.",
["deutsch"] = "deu."
}
-- Sichtbare Abkürzung ermitteln (Param > Mapping > Fallback)
local function abbrOr(paramAbbr, long, tableMap)
local a = trim(paramAbbr)
if a ~= "" then return a end
local longN = trim(long)
return tableMap[longN] or longN
end
-- Baut sichtbare Linkfolge der Tokens (ohne Trennzeichen, die Bindestriche stehen im Token)
local function visibleTokens(args)
local parts = {}
for i=1,3 do
local t = trim(args[i .. "Wortglied"])
if t ~= "" then
table.insert(parts, "[[:Kategorie:" .. t .. "]]")
end
end
return table.concat(parts, "")
end
-- Unsichtbare Kategorisierung inkl. Sortierschlüssel
local function hiddenCategories(args)
local cats = {}
for i=1,3 do
local t = trim(args[i .. "Wortglied"])
if t ~= "" then
local sort = trim(args[i .. "Sort"])
if sort == "" then sort = sortkey(t) end
table.insert(cats, "[[Kategorie:" .. t .. "|" .. sort .. "]]")
end
end
-- Klassifikations-Kategorien
local wa = trim(args["Wortart"])
if wa ~= "" then table.insert(cats, "[[Kategorie:Wortart " .. wa .. "]]") end
local g = trim(args["Wortgeschlecht"])
if g ~= "" then table.insert(cats, "[[Kategorie:Wortgeschlecht " .. g .. "]]") end
local sAbk = abbrOr(args["SprachstufeAbk"], args["Sprachstufe"], mapSprachToAbbr)
if trim(sAbk) ~= "" then table.insert(cats, "[[Kategorie:Sprachstufe " .. sAbk .. "]]") end
return table.concat(cats)
end
-- SMW #set Blöcke
local function smwSets(args, pageName)
local sets = {}
-- Oberbegriff
table.insert(sets, "{{#set: ist Wortbildung::" .. pageName .. "}}")
-- Klassifikation (Langform)
local wa = trim(args["Wortart"])
if wa ~= "" then table.insert(sets, "{{#set: ist Wortart::" .. wa .. "}}") end
local g = trim(args["Wortgeschlecht"])
if g ~= "" then table.insert(sets, "{{#set: ist Wortgeschlecht::" .. g .. "}}") end
local sLong = trim(args["Sprachstufe"])
if sLong ~= "" then table.insert(sets, "{{#set: ist Sprachstufe::" .. sLong .. "}}") end
-- Teile nach Art → Property
local art2prop = {
["Wortbildung"] = "hat Wortbildung",
["Wortandglied"] = "hat Wortandglied",
["Wortendglied"] = "hat Wortendglied",
["Wortfuge"] = "hat Wortfuge"
}
for i=1,3 do
local t = trim(args[i .. "Wortglied"])
local a = trim(args[i .. "Wortgliedart"])
if t ~= "" and a ~= "" and art2prop[a] then
local prop = art2prop[a]
table.insert(sets, "{{#set: " .. prop .. "::" .. cleanValue(t) .. "}}")
end
end
return table.concat(sets)
end
function p.render(frame)
local args = frame:getParent() and frame:getParent().args or frame.args
local pageName = mw.title.getCurrentTitle().text
local vis = visibleTokens(args)
-- Abkürzungen für Anzeige
local waAbk = abbrOr(args["WortartAbk"], args["Wortart"], mapWortartToAbbr)
local gAbk = abbrOr(args["WortgeschlechtAbk"], args["Wortgeschlecht"], mapGeschlechtToAbbr)
local sAbk = abbrOr(args["SprachstufeAbk"], args["Sprachstufe"], mapSprachToAbbr)
local displayTail = {}
if trim(waAbk) ~= "" then table.insert(displayTail, waAbk) end
if trim(gAbk) ~= "" then table.insert(displayTail, gAbk) end
if trim(sAbk) ~= "" then table.insert(displayTail, sAbk) end
local visible = vis
if #displayTail > 0 then
visible = visible .. " " .. table.concat(displayTail, " ")
end
local cats = hiddenCategories(args)
local sets = smwSets(args, pageName)
-- Keine erzwungenen Zeilenumbrüche
return visible .. cats .. sets
end
return p