Die Dokumentation für dieses Modul kann unter Modul:LPON/Helper/Doku erstellt werden
local helper = {}
local getArgs = require('Module:Arguments').getArgs
-- Funktion zur Anpassung des DISPLAYTITLE über mw.ext.displaytitle
function helper.setDisplayTitle(frame)
local args = getArgs(frame)
local title = args["title"]
if title and title ~= "" then
local success, err = pcall(function()
mw.ext.displaytitle.set(title)
end)
if not success then
mw.log("Fehler beim Setzen des DISPLAYTITLE: " .. tostring(err))
end
end
end
-- set with return results
function helper.setProperty( frame )
if not mw.smw then
return "mw.smw module not found"
end
local result = mw.smw.set( frame.args )
if result == true then
return
else
return 'An error occurred during the storage process. Message reads ' .. result.error
end
end
-- Funktion zur Hinzufügung von Kategorien mit Sortkey
function helper.addCategories(frame)
-- Argumente aus dem Frame extrahieren
local args = getArgs(frame)
-- Kategorienliste und Sortkey abrufen
local categories = args["categories"] or {}
local sortkey = args["sortkey"] or mw.title.getCurrentTitle().text -- Standard: Seitentitel als Sortkey
-- Validierung der Kategorienliste
if type(categories) == "string" then
categories = mw.text.split(categories, ",") -- Kategorien können als kommaseparierte Liste übergeben werden
end
if type(categories) ~= "table" then
return "Ungültige Kategorienliste."
end
-- Kategorienausgabe generieren
local output = ""
for _, category in ipairs(categories) do
if category and category ~= "" then
output = output .. "[[Kategorie:" .. category .. "|" .. sortkey .. "]]\n"
end
end
return output
end
-- String von Sonderzeichen bereinigen
function helper.cleanString(input)
if not input or input == "" then
return ""
end
return input
:gsub("[%c]", "") -- Entfernt Steuerzeichen
:gsub("[\"']", "") -- Entfernt Anführungszeichen (Doppel und einfach)
:gsub("[%p&&[^:/]]", "") -- Entfernt Satzzeichen außer ":" und "/"
:gsub("%s+", " ") -- Reduziert mehrfache Leerzeichen auf eins
:gsub("^%s*(.-)%s*$", "%1") -- Entfernt führende und abschließende Leerzeichen
:gsub("[:/]", " - ") -- Ersetzt ":" und "/" durch "-
end
-- Text bereinigen und ggf. kürzen
function helper.cleanAndTruncate(text, truncateLength)
if not text or text == "" then
return ""
end
-- Textbereinigung
text = mw.text.killMarkers(text)
:gsub(' ', ' ') -- Ersetze nbsp durch Leerzeichen
:gsub('<br ?/?>', ', ') -- Ersetze Zeilenumbrüche durch Kommas
:gsub('<span.->(.-)</span>', '%1') -- Entferne Spans, behalte den Inhalt
:gsub('<i.->(.-)</i>', '%1') -- Entferne Italics, behalte den Inhalt
:gsub('<b.->(.-)</b>', '%1') -- Entferne Fett-Markierungen, behalte den Inhalt
:gsub('<em.->(.-)</em>', '%1') -- Entferne Emphasis, behalte den Inhalt
:gsub('<strong.->(.-)</strong>', '%1') -- Entferne Strong, behalte den Inhalt
:gsub('<sub.->(.-)</sub>', '%1') -- Entferne Subscript
:gsub('<sup.->(.-)</sup>', '%1') -- Entferne Superscript
:gsub('<u.->(.-)</u>', '%1') -- Entferne Underline
:gsub('<.->.-<.->', '') -- Entferne verbleibende Tags und deren Inhalte
:gsub('<.->', '') -- Entferne verbleibende Markup-Tags
:gsub('%[%[%s*[Ff][Ii][Ll][Ee]%s*:.-%]%]', '') -- Entferne File-Tags
:gsub('%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:.-%]%]', '') -- Entferne Image-Tags
:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:.-%]%]', '') -- Entferne Kategorien
:gsub('%[%[[^%]]-|', '') -- Entferne piped Linktexte
:gsub('([^%[])%[[^%[%]][^%]]-%s', '%1') -- Entferne externe Linktexte
:gsub('^%[[^%[%]][^%]]-%s', '') -- Entferne externe Linktexte (am Anfang)
:gsub('[%[%]]', '') -- Entferne verbleibende [ und ]
:gsub("'''''", "") -- Entferne fett-kursiv
:gsub("'''?", "") -- Entferne Fett-Markierung
:gsub('----+', '') -- Entferne Trennlinien
:gsub("^%s+", "") -- Entferne führende Leerzeichen
:gsub("%s+$", "") -- Entferne abschließende Leerzeichen
:gsub("%s+", " ") -- Reduziere Mehrfach-Leerzeichen
-- Optional: Kürze den Text
if truncateLength and tonumber(truncateLength) then
text = mw.text.truncate(text, tonumber(truncateLength), '…', true) -- Kürze mit "…" am Ende
end
return text
end
-- Funktion zur Erzeugung von Videoplattform-Links
function helper.getVideoLink(service, id)
if not service or not id then
return nil
end
local link = ""
if service == "youtube" then
link = "https://www.youtube.com/watch?v=" .. id
elseif service == "twitch" then
link = "https://www.twitch.tv/videos/" .. id
elseif service == "vimeo" then
link = "https://vimeo.com/" .. id
else
return nil -- Unbekannter Dienst
end
return link
end
function helper.getPlayerLink(frame, playerName)
if not playerName or playerName == "" then
return playerName
end
-- Spielername bereinigen und Link erstellen
local cleanName = mw.text.trim(playerName)
local playerPage = "LetsPlayOrNot:" .. cleanName:gsub(" ", "_")
local wikitextLink = string.format("[[%s|%s]]", playerPage, cleanName)
return frame:preprocess(wikitextLink)
end
return helper