Zum Inhalt springen

Modul:Unterrichtsfilm/Helper

Aus Matrix of Time
Version vom 13. April 2026, 01:07 Uhr von Xineohp1506 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „local helper = {} local getArgs = require('Module:Arguments').getArgs -- Semantische Speicherung mit Fehlerausgabe function helper.setProperty(props) if not mw.smw then return "SMW-Modul nicht verfügbar" end local result = mw.smw.set(props) if result == true then return else return 'Fehler beim Speichern: ' .. result.error end end -- Kategorien mit Sortkey + feste Kategorie "Film & Serie" function helper.…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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

local helper = {}
local getArgs = require('Module:Arguments').getArgs

-- Semantische Speicherung mit Fehlerausgabe
function helper.setProperty(props)
    if not mw.smw then
        return "SMW-Modul nicht verfügbar"
    end
    local result = mw.smw.set(props)
    if result == true then
        return
    else
        return 'Fehler beim Speichern: ' .. result.error
    end
end

-- Kategorien mit Sortkey + feste Kategorie "Film & Serie"
function helper.addCategories(data)
    local cats = data.categories or {}
    local sortkey = data.sortkey or mw.title.getCurrentTitle().text
    if type(cats) == "string" then
        cats = mw.text.split(cats, ",")
    end
    if type(cats) ~= "table" then
        return "Ungültige Kategorienliste."
    end

    table.insert(cats, "Film & Serie")

    local output = ""
    for _, cat in ipairs(cats) do
        cat = mw.text.trim(cat)
        if cat and cat ~= "" then
            output = output .. string.format("[[Kategorie:%s|%s]]\n", cat, sortkey)
        end
    end
    return output
end

-- Icon abhängig vom Typ
function helper.getIcon(typ)
    typ = (typ or ""):lower()
    if typ == "dokumentation" then
        return "book"
    elseif typ == "serie" then
        return "tv"
    elseif typ == "kurzfilm" then
        return "clapperboard"
    else
        return "film"
    end
end

-- String von Sonderzeichen bereinigen
function helper.cleanString(input)
    if not input or input == "" then
        return ""
    end
    return input
        :gsub("[%c]", "")
        :gsub("[\"']", "")
        :gsub("[%p&&[^:/]]", "")
        :gsub("%s+", " ")
        :gsub("^%s*(.-)%s*$", "%1")
        :gsub("[:/]", " - ")
end

-- Text bereinigen und kürzen (z. B. für FilmKurzbeschreibung)
function helper.cleanAndTruncate(text, truncateLength)
    if not text or text == "" then
        return ""
    end
    text = mw.text.killMarkers(text)
        :gsub(' ', ' ')
        :gsub('<br ?/?>', ', ')
        :gsub('<span.->(.-)</span>', '%1')
        :gsub('<i.->(.-)</i>', '%1')
        :gsub('<b.->(.-)</b>', '%1')
        :gsub('<em.->(.-)</em>', '%1')
        :gsub('<strong.->(.-)</strong>', '%1')
        :gsub('<sub.->(.-)</sub>', '%1')
        :gsub('<sup.->(.-)</sup>', '%1')
        :gsub('<u.->(.-)</u>', '%1')
        :gsub('<.->.-<.->', '')
        :gsub('<.->', '')
        :gsub('%[%[%s*[Ff][Ii][Ll][Ee]%s*:.-%]%]', '')
        :gsub('%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:.-%]%]', '')
        :gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:.-%]%]', '')
        :gsub('%[%[[^%]]-|', '')
        :gsub('([^%[])%[[^%[%]][^%]]-%s', '%1')
        :gsub('^%[[^%[%]][^%]]-%s', '')
        :gsub('[%[%]]', '')
        :gsub("'''''", "")
        :gsub("'''?", "")
        :gsub('----+', '')
        :gsub("^%s+", "")
        :gsub("%s+$", "")
        :gsub("%s+", " ")
    if truncateLength and tonumber(truncateLength) then
        text = mw.text.truncate(text, tonumber(truncateLength), '…', true)
    end
    return text
end

-- DISPLAYTITLE setzen
function helper.setDisplayTitle(data)
    local title = data.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

return helper