×
Create a new article
Write your page title here:
We currently have 2,187 articles on The Quelmar Wiki. Type your article name above or click on one of the titles below and start writing!



The Quelmar Wiki

Documentation for this module may be created at Module:CampaignNavbox/doc

local p = {}

function p.getCampaigns(frame)
    -- Fetch the content of the "Campaign" page
    local pageTitle = "Campaign"
    local page = mw.title.new(pageTitle)
    local wikitext = page:getContent()

    -- Check if the page content is available
    if not wikitext then
        return "Campaign Page not found?"
    end

    local campaigns = {
        PA = {},
        MD = {},
        MN = {},
        Twitch = {},
        Online = {},
        International = {}
    }

    local function processRow(row)
        -- Extract everything up to the first "]]"
        local campaignWithLink = row:match("^.-]]")
        -- Extract the location, which is the last element before the end of the row
        local location = row:match("[^\n]+$")

        if campaignWithLink and location then
            campaignWithLink = campaignWithLink
                :gsub("^|", "")
                :gsub("'''%s*$", "")
                :gsub("'''", "")
                :gsub("|%[%[", "%[%[")
            location = location:gsub("^|", ""):gsub("'''%s*$", "")

            -- Add the campaign to the relevant location list
            if location:find("PA") then
                table.insert(campaigns.PA, campaignWithLink)
            end
            if location:find("MD") then
                table.insert(campaigns.MD, campaignWithLink)
            end
            if location:find("MN") then
                table.insert(campaigns.MN, campaignWithLink)
            end
            if location:find("Online") then
                table.insert(campaigns.Online, campaignWithLink)
            end
            if location:find("Twitch") then
                table.insert(campaigns.Twitch, campaignWithLink)
            end
            if location:find("🇩🇪") or location:find("🏴") then
                table.insert(campaigns.International, campaignWithLink)
            end
        end
    end

    -- Split the wikitext into rows and process each
    local rowPattern = "|-%s*(.-)\n|%-"
    wikitext = wikitext .. '|-\n'  -- Append delimiter to capture the last row
    local skipRows = 1  -- Number of rows to skip to get rid of pre-table text
    for row in wikitext:gmatch(rowPattern) do
        if skipRows > 0 then
            skipRows = skipRows - 1
        else
            processRow(row)
        end
    end

    -- Build the navbox
    local navbox = '{| class="wikitable"\n!Location\n!Campaigns\n'
    for loc, camps in pairs(campaigns) do
        navbox = navbox .. '|-\n|' .. loc .. '\n|' .. table.concat(camps, ', ') .. '\n'
    end
    navbox = navbox .. '|}'
    return navbox
end

return p
Cookies help us deliver our services. By using our services, you agree to our use of cookies. (Hi Margarita's Table. 🇩🇪)
Cookies help us deliver our services. By using our services, you agree to our use of cookies. (Hi Margarita's Table. 🇩🇪)