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



The Quelmar Wiki
Revision as of 15:50, 23 January 2024 by Spiderjjr45 (talk | contribs)

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 "Error: Unable to fetch content for page '" .. pageTitle .. "'."
    end

    local campaigns = {
        PA = {},
        MD = {},
        Online = {}
    }

local function processRow(row)
    -- Extract the campaign name, handling both cases
    local campaign = row:match("|'''%[%[(.-)%]%]'''") -- Matches cases like |'''[[SotS Inc]]'''
    if not campaign then
        campaign = row:match("|%[%[(.-)|'''") -- Matches cases like |[[Ancients Alive|'''Ancients Alive''']]
        if not campaign then
            campaign = row:match("|%[%[(.-)%]%]") -- Matches cases like |[[Campaign Name]]
        end
    end
    
    -- In case campaign name is still not found, use alternative pattern
    if not campaign then
        campaign = row:match("|'''(.-)'''") -- Matches cases without wiki link but with bold formatting
    end

    -- Extract the location, which is the last element before the end of the row
  --   local location = row:match("|([^|]-)\n?$") -- The '$' ensures that we are at the end of the row
local location = "test"
    if campaign and location then
        location = mw.text.trim(location) -- Trim whitespace from the location string
        -- Check and add to the relevant location
        if location:find("PA") then
            table.insert(campaigns.PA, campaign)
        end
        if location:find("MD") then
            table.insert(campaigns.MD, campaign)
        end
        if location:find("Online") then
            table.insert(campaigns.Online, campaign)
        end
    end
end

    -- Split the wikitext into rows and process each
local rowPattern = "|%-(.-)\n|%-"
wikitext = wikitext .. '|-'  -- Append delimiter to capture the last row
for row in wikitext:gmatch(rowPattern) do
    processRow(row)
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. 🇩🇪)