Spiderjjr45 (talk | contribs) No edit summary |
Spiderjjr45 (talk | contribs) 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 | ||
-- 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 = "|% | 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 | ||
processRow(row) | 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 | end | ||
Line 53: | Line 61: | ||
end | end | ||
navbox = navbox .. '|}' | navbox = navbox .. '|}' | ||
return navbox | return navbox | ||
end | end | ||
return p | return p |
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