Modul:ChapterTabs
Aus Zweidat
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, "=", "=")
-- 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