Zum Inhalt springen

Modul:DokuTools

Aus Wikonia
Dokumentation ansehenbearbeitenVersionsverlaufCache leeren
Seite geschützt
Vorlagenschleife entdeckt: Modul:DokuTools/Doku

Zweck[Quelltext bearbeiten]

Das Modul stellt kleine Hilfsfunktionen für Dokumentationsseiten bereit. Aktuell enthält es eine Funktion, um Links zur Cirrus-Suche zu erzeugen, die alle Seiten anzeigt, welche die aktuelle Vorlage/Seite transkludieren.

Dies ist vor allem in Dokumentations- oder Wartungskontexten nützlich, z. B. vor Änderungen an Vorlagen oder Modulen.

Verfügbare Funktionen[Quelltext bearbeiten]

transcludesUrl()
Gibt die reine URL zur Cirrus-Suche zurück.
Ergebnis kann direkt in Vorlagen oder Modulen weiterverwendet werden.
transcludesLink
Gibt einen formatierter Link zurück.
Eignet sich für die direkte Einbindung in Dokumentations- und Footerboxen.

Nutzung[Quelltext bearbeiten]

Das Modul unterstützt sowohl die Ausgabe als einen kompletten, anpassbaren Link, als auch die Ausgabe der eigentlichen „Helferfunktion“ um nur die URL — zum Beispiel für die Weiterverwendung in einem Button oder komplexeren Vorlagen zu ermöglichen.

Ausgabe eines Links[Quelltext bearbeiten]

{{#invoke:DokuTools|transcludesLink}} Das Standardlabel „Einbindungen suchen“ wird gesetzt.

Optional kann das Label angepasst werden:

{{#invoke:DokuTools|transcludesLink|label=Verwendungen anzeigen}}

Nutzung ohne Link (nur URL)[Quelltext bearbeiten]

{{#invoke:DokuTools|transcludesUrl}}

Technische Hinweise[Quelltext bearbeiten]

  • Wenn die Dokumentationsseite den Suffix /Doku trägt, wird dieser automatisch entfernt.
  • Die Namensraumbezeichnung wird berücksichtigt (z. B. Vorlage:Name, Modul:Name).
  • Die erzeugte Cirrus-Suchanfrage nutzt hastemplate:.

Siehe auch


-- Modul: DokuTools 
-- als Ergänzung für Schnippsel, Hilfefuntionen für Dokumentationen o. ä.
local p = {}

local function fullTitleWithoutDocu()
    local t = mw.title.getCurrentTitle()
    local base = (t.text or ""):gsub("/Doku$", "")
    local ns = t.nsText
    if ns and ns ~= "" then
        return ns .. ":" .. base
    else
        return base
    end
end

-- Gibt nur die Cirrus-URL zurück
function p.transcludesUrl()
    local t = mw.title.getCurrentTitle()
    local base = t.text:gsub("/Doku$", "")         -- "/Doku" abwerfen

    local query
    if t.nsText == "Vorlage" then
        -- Cirrus: alle Seiten, die diese Vorlage transkludieren
        query = string.format("hastemplate:%s ", base)
    elseif t.nsText == "Modul" then
        -- Cirrus: #invoke für dieses Modul (grobe, aber praktische Heuristik)
        local esc = mw.ustring.gsub(base, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1")
        query = string.format('insource:/#invoke:%s[^\n}]*?/ ', esc)
    else
        -- Fallback: versuche es mit vollständigem Titel
        query = string.format("hastemplate:%s ", t.prefixedText)
    end

    return mw.title.new("Suche", -1):canonicalUrl{ search = query }
end

-- Gibt einen fertig formatierten Link zurück
-- Nutzung in Vorlage: {{#invoke:DokuTools|transcludesLink|label=Einbindungen}}
function p.transcludesLink(frame)
    local label = (frame.args.label or "Einbindungen suchen")
    local url = p.transcludesUrl()
    return string.format('<span class="plainlinks">[%s %s]</span>', url, label)
end

return p