Zuletzt bearbeitet vor 5 Monaten
von Xineohp1506

Modul:LPON/Helper: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 50: Zeile 50:
     -- Kategorienausgabe generieren
     -- Kategorienausgabe generieren
     local output = ""
     local output = ""
    for _, category in ipairs(categories) do
    for _, category in ipairs(categories) do
        if category and category ~= "" then
        if category and category ~= "" then
            output = output .. "[[Kategorie:" .. category .. "|" .. sortkey .. "]]\n"
            output = output .. "[[Kategorie:" .. category .. "|" .. sortkey .. "]]\n"
        end
        end
    end
    end
    return output
end


    return output
-- String von Sonderzeichen bereinigen
end
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


-- String von Sonderzeichen bereinigen
-- Text bereinigen und ggf. kürzen
function helper.cleanString(input)
function helper.cleanAndTruncate(text, truncateLength)
    if not input or input == "" then
    if not text or text == "" then
        return ""
        return ""
    end
    end
 
    return input
    -- Textbereinigung
        :gsub("[%c]", "")         -- Entfernt Steuerzeichen
    text = mw.text.killMarkers(text)
        :gsub("[\"']", "")       -- Entfernt Anführungszeichen (Doppel und einfach)
        :gsub(' ', ' ') -- Ersetze nbsp durch Leerzeichen
        :gsub("[%p&&[^:/]]", "") -- Entfernt Satzzeichen außer ":" und "/"
        :gsub('<br ?/?>', ', ') -- Ersetze Zeilenumbrüche durch Kommas
        :gsub("%s+", " ")         -- Reduziert mehrfache Leerzeichen auf eins
        :gsub('<span.->(.-)</span>', '%1') -- Entferne Spans, behalte den Inhalt
        :gsub("^%s*(.-)%s*$", "%1") -- Entfernt führende und abschließende Leerzeichen
        :gsub('<i.->(.-)</i>', '%1') -- Entferne Italics, behalte den Inhalt
        :gsub("[:/]", " - ")       -- Ersetzt ":" und "/" durch "-
        :gsub('<b.->(.-)</b>', '%1') -- Entferne Fett-Markierungen, behalte den Inhalt
end
        :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


return helper
return helper

Version vom 2. Dezember 2024, 23:54 Uhr

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('&nbsp;', ' ') -- 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

return helper