Zum Inhalt springen

„Modul:Schaufenster“ – Versionsunterschied

aus AufEinWort, der freien Forschung
KKeine Bearbeitungszusammenfassung
Markierung: Manuelle Zurücksetzung
KKeine Bearbeitungszusammenfassung
Zeile 32: Zeile 32:
     local roh = ""
     local roh = ""
     if bereich == "Anfang" then
     if bereich == "Anfang" then
         roh = mw.ustring.match(content, "^(.-)==") or content
         roh = mw.ustring.match(content, "^(.-)\n==") or content
     else
     else
         -- Suche nach == Bereich == (mit optionalem Leerraum)
         -- Suche nach == Bereich == (mit optionalem Leerraum)

Version vom 9. April 2025, 12:37 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Schaufenster/Doku erstellt werden

-- Modul:Bereichsfenster
-- Gibt einen bestimmten Abschnitt ("Bereich") einer Seite zurück, bereinigt von SMW- und Kategorie-Wirkungen

local p = {}
local aufbereiter = require("Modul:Linkaufbereitung")

-- Hilfsfunktion: Gibt Inhalt zwischen zwei Mustern zurück
local function extrahiereBereich(text, startMarke, endMarke)
    local muster = startMarke .. "(.-)" .. endMarke
    local inhalt = mw.ustring.match(text, muster)
    return inhalt or ""
end

function p.zeige(frame)
    local seitentitel = frame.args[1]
    local bereich = frame.args[2]

    if not seitentitel or seitentitel == "" then
        return "Fehler: Kein Seitentitel angegeben."
    end

    local page = mw.title.new(seitentitel)
    if not page or not page.exists then
        return "Fehler: Seite '" .. seitentitel .. "' existiert nicht."
    end

    local content = page:getContent()
    if not content then
        return "Fehler: Seite '" .. seitentitel .. "' enthält keinen Inhalt."
    end

    local roh = ""
    if bereich == "Anfang" then
        roh = mw.ustring.match(content, "^(.-)\n==") or content
    else
        -- Suche nach == Bereich == (mit optionalem Leerraum)
        local patternStart = "==%s*" .. bereich .. "%s*=="
        local patternEnd = "==[^=].-=="
        roh = extrahiereBereich(content, patternStart, patternEnd)
        if roh ~= "" then
            roh = "== " .. bereich .. " ==\n" .. roh
        end
    end

    local bereinigt = aufbereiter.saeubern(roh)
    return frame:preprocess(bereinigt)
end

return p