Zum Inhalt springen

„Modul:Umschriftung“ – Versionsunterschied

aus AufEinWort, der freien Forschung
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
-- Modul:Umschriftung
-- Modul:Umschriftung
-- siehe neues Modul:Umschrift, Ersatz zu Modul:Umschriftung
-- Version 1.3 – Sprachspezifische Umschriftung (deu, eng, lat), flexible zeig-Funktion
-- Version 1.3 – Sprachspezifische Umschriftung (deu, eng, lat), flexible zeig-Funktion



Aktuelle Version vom 21. April 2025, 06:04 Uhr

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

-- Modul:Umschriftung
-- siehe neues Modul:Umschrift, Ersatz zu Modul:Umschriftung
-- Version 1.3 – Sprachspezifische Umschriftung (deu, eng, lat), flexible zeig-Funktion

local p = {}
local ustring = mw.ustring

-- zentrale Umschrift-Funktion mit Sprachwahl
function p.umschrifte(frame, sprache)
    local title = mw.title.getCurrentTitle()
    local content = title:getContent() or ""

    -- Schriftart extrahieren
    local schriftart = content:match("%[%[Schriftart::([^|%]]+)") or content:match("%[%[Schriftart::([^%]]+)%]%]")
    if not schriftart or schriftart == "" then
        return "[Fehler: Keine Schriftart auf dieser Seite gefunden – [[Schriftart::...]] fehlt.]"
    end

    -- Tabellenmodulname
    local modulname = "Umschriftung/" .. schriftart

    -- Tabelle laden
    local status, tabellen = pcall(mw.loadData, "Modul:" .. modulname)
    if not status or type(tabellen) ~= "table" then
        return "[Fehler: Konnte Tabelle 'Modul:" .. modulname .. "' nicht laden.]"
    end

    local tabelle = tabellen[sprache or "deu"]
    if not tabelle then
        return "[Fehler: Keine Umschriftungstabelle für Sprache '" .. tostring(sprache) .. "' gefunden.]"
    end

    local quelltext = title.text
    local ergebnis = ""
    for i = 1, ustring.len(quelltext) do
        local buchstabe = ustring.sub(quelltext, i, i)
        ergebnis = ergebnis .. (tabelle[buchstabe] or buchstabe)
    end

    return ergebnis
end

-- Sprachspezifische Kurzfunktionen
function p.din(frame)
    return p.umschrifte(frame, "din")
end
function p.deu(frame)
    return p.umschrifte(frame, "deu")
end

function p.eng(frame)
    return p.umschrifte(frame, "eng")
end

function p.lat(frame)
    return p.umschrifte(frame, "lat")
end

-- Kurzform für [[Umschrift::{{#invoke:Umschriftung|zeig|deu}}]] usw.
function p.zeig(frame)
    local sprache = frame.args[1] or "deu"
    local ok, result = pcall(p.umschrifte, frame, sprache)
    if ok then
        return result
    else
        return "[Umschrift-Fehler: " .. tostring(result) .. "]"
    end
end

-- Debug-Funktion zur Anzeige der ermittelten Schriftart
function p.zeigeSchriftart(frame)
    local title = mw.title.getCurrentTitle()
    local content = title:getContent() or ""
    local schriftart = content:match("%[%[Schriftart::([^|%]]+)") or content:match("%[%[Schriftart::([^%]]+)%]%]")
    if not schriftart or schriftart == "" then
        return "[Fehler: Keine Schriftart auf dieser Seite gefunden – [[Schriftart::...]] fehlt.]"
    end
    return "Ermittelte Schriftart: " .. schriftart
end

return p