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



The Quelmar Wiki

Module:CampaignNavbox: Difference between revisions

No edit summary
No edit summary
Line 16: Line 16:
MD = {},
MD = {},
Online = {}
Online = {}
}local function processRow(row)
}
local function processRow(row)
-- Extract everything up to the first "]]"
-- Extract everything up to the first "]]"
local campaignWithLink = row:match("^.-]]")
local campaignWithLink = row:match("^.-]]")
campaignWithLink = campaignWithLink:gsub("^|%s*'''", ""):gsub("'''%s*$", ""):gsub("'''", "")
print(campaignWithLink)
-- Extract the location, which is the last element before the end of the row
-- Extract the location, which is the last element before the end of the row
local location = row:match("[^\n]+$")
local location = row:match("[^\n]+$")
location = location:gsub("^|%s*'''", ""):gsub("'''%s*$", "")
print(location)


if campaignWithLink then
if campaignWithLink and location then
-- Clean up the campaign string by removing leading pipes, quotes, and any trailing whitespace
campaignWithLink = campaignWithLink:gsub("^|%s*'''", ""):gsub("'''%s*$", ""):gsub("%[%[", ""):gsub("%]%]", "")
-- Trim the location string
-- Trim the location string
location = mw.text.trim(location)
--location = mw.text.trim(location)


-- Add the campaign to the relevant location list
-- Add the campaign to the relevant location list
Line 41: Line 42:


-- Split the wikitext into rows and process each
-- Split the wikitext into rows and process each
local rowPattern = "|%-(.-)\n|%-"
local rowPattern = "|-%s*(.-)\n|%-"
wikitext = wikitext .. '|-' -- Append delimiter to capture the last row
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
for row in wikitext:gmatch(rowPattern) do
if skipRows > 0 then
processRow(row)
-- Skip the row
skipRows = skipRows - 1 -- Decrement the counter
else
-- Process the row (e.g., print it)
processRow(row)
end
end
end


Line 53: Line 61:
end
end
navbox = navbox .. '|}'
navbox = navbox .. '|}'

return navbox
return navbox
end
end

Revision as of 16:20, 23 January 2024

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 everything up to the first "]]"
    local campaignWithLink = row:match("^.-]]")
    campaignWithLink = campaignWithLink:gsub("^|%s*'''", ""):gsub("'''%s*$", ""):gsub("'''", "")
    print(campaignWithLink)
    -- Extract the location, which is the last element before the end of the row
    local location = row:match("[^\n]+$")
    location = location:gsub("^|%s*'''", ""):gsub("'''%s*$", "")
    print(location)

    if campaignWithLink and location then
        -- Trim the location string
        --location = mw.text.trim(location)

        -- Add the campaign to the relevant location list
        if location:find("PA") then
            table.insert(campaigns.PA, campaignWithLink)
        elseif location:find("MD") then
            table.insert(campaigns.MD, campaignWithLink)
        elseif location:find("Online") then
            table.insert(campaigns.Online, 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
        -- Skip the row
        skipRows = skipRows - 1  -- Decrement the counter
    else
        -- Process the row (e.g., print it)
        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. 🇩🇪)