Modul:ChapterTabs

Aus Zweidat
Version vom 25. Oktober 2024, 12:53 Uhr von Zpd (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „-- Module for creating TabberNeue structure from SMW query local p = {} -- Helper function to split string by delimiter local function split(str, delimiter) local result = {} for match in (str .. delimiter):gmatch("(.-)" .. delimiter) do table.insert(result, match) end return result end -- Main function to generate tabs function p.generateTabs(frame) local tabberStart = '<tabber>\n' local tabberEnd = '</tabber>' local…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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

-- Module for creating TabberNeue structure from SMW query
local p = {}

-- Helper function to split string by delimiter
local function split(str, delimiter)
    local result = {}
    for match in (str .. delimiter):gmatch("(.-)" .. delimiter) do
        table.insert(result, match)
    end
    return result
end

-- Main function to generate tabs
function p.generateTabs(frame)
    local tabberStart = '<tabber>\n'
    local tabberEnd = '</tabber>'
    local tabs = ''
    
    -- Get the SMW query results for books
    local query = mw.smw.ask({
        '[[Category:Buch]]',
        '?BuchSortierung'
    })
    
    if not query then
        return "No results found"
    end
    
    -- Sort the results by BuchSortierung if available
    table.sort(query, function(a, b)
        local sortA = a.printouts.BuchSortierung and a.printouts.BuchSortierung[1] or a.fulltext
        local sortB = b.printouts.BuchSortierung and b.printouts.BuchSortierung[1] or b.fulltext
        return sortA < sortB
    end)
    
    -- Generate tabs for each book
    for _, result in ipairs(query) do
        local pageName = result.fulltext
        -- Escape any equal signs in the page name
        local safePageName = string.gsub(pageName, "=", "&#61;")
        
        -- Simply use the page name as content
        tabs = tabs .. safePageName .. '=' .. pageName .. '\n|-|\n'
    end
    
    -- Remove the last tab separator
    tabs = string.gsub(tabs, '\n|-|\n$', '')
    
    return tabberStart .. tabs .. tabberEnd
end

return p