Modul: ChapterTabs: Unterschied zwischen den Versionen

Aus Zweidat
Wechseln zu: Navigation, Suche
(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…“)
 
Keine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
-- Module for creating TabberNeue structure from SMW query
-- Module for creating TabberNeue structure from SMW query
local p = {}
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
-- Main function to generate tabs
function p.generateTabs(frame)
function p.generateTabs(frame)
    local tabberStart = '<tabber>\n'
     -- Get the SMW query results for books with no links
    local tabberEnd = '</tabber>'
    local tabs = ''
   
     -- Get the SMW query results for books
     local query = mw.smw.ask({
     local query = mw.smw.ask({
         '[[Category:Buch]]',
         '[[Category:Buch]]',
         '?BuchSortierung'
         '?=#',
        '?',
        '?BuchSortierung',
        'sort=BuchSortierung'
     })
     })
      
      
Zeile 27: Zeile 17:
     end
     end
      
      
     -- Sort the results by BuchSortierung if available
     -- Generate tabs content
     table.sort(query, function(a, b)
     local tabContent = ''
        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
     -- Generate tabs for each book
     for _, result in ipairs(query) do
     for _, result in ipairs(query) do
         local pageName = result.fulltext
        -- Get the page name from the first element
         local pageName = result[1]
        local pageLink = result[2]
         -- Escape any equal signs in the page name
         -- Escape any equal signs in the page name
         local safePageName = string.gsub(pageName, "=", "&#61;")
         local safePageName = string.gsub(pageName, "=", "&#61;")
        local safePageLink = string.gsub(pageLink, "=", "&#61;")
          
          
         -- Simply use the page name as content
         -- Add tab content
         tabs = tabs .. safePageName .. '=' .. pageName .. '\n|-|\n'
         tabContent = tabContent .. safePageName .. '=' .. safePageLink .. '\n|-|\n'
     end
     end
      
      
     -- Remove the last tab separator
     -- Remove the last separator
     tabs = string.gsub(tabs, '\n|-|\n$', '')
     tabContent = string.gsub(tabContent, '\n|-|\n$', '')
      
      
     return tabberStart .. tabs .. tabberEnd
    -- Use frame:extensionTag to properly trigger the extension
     return frame:extensionTag('tabber', tabContent)
end
end


return p
return p

Aktuelle Version vom 25. Oktober 2024, 13:36 Uhr

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

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

-- Main function to generate tabs
function p.generateTabs(frame)
    -- Get the SMW query results for books with no links
    local query = mw.smw.ask({
        '[[Category:Buch]]',
        '?=#',
        '?',
        '?BuchSortierung',
        'sort=BuchSortierung'
    })
    
    if not query then
        return "No results found"
    end
    
    -- Generate tabs content
    local tabContent = ''
    
    -- Generate tabs for each book
    for _, result in ipairs(query) do
        -- Get the page name from the first element
        local pageName = result[1]
        local pageLink = result[2]
        -- Escape any equal signs in the page name
        local safePageName = string.gsub(pageName, "=", "&#61;")
        local safePageLink = string.gsub(pageLink, "=", "&#61;")
        
        -- Add tab content
        tabContent = tabContent .. safePageName .. '=' .. safePageLink .. '\n|-|\n'
    end
    
    -- Remove the last separator
    tabContent = string.gsub(tabContent, '\n|-|\n$', '')
    
    -- Use frame:extensionTag to properly trigger the extension
    return frame:extensionTag('tabber', tabContent)
end

return p