The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 9: | Line 9: | ||
-- Check if the page content is available | -- Check if the page content is available | ||
if not wikitext then | if not wikitext then | ||
return "Error: Unable to fetch content for page '" .. pageTitle .. "'." | |||
end | end | ||
Line 15: | Line 15: | ||
PA = {}, | PA = {}, | ||
MD = {}, | MD = {}, | ||
Online = {} | |||
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 | -- 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 | 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 | if location:find("PA") then | ||
table.insert(campaigns.PA, | table.insert(campaigns.PA, campaign) | ||
end | |||
if location:find("MD") then | if location:find("MD") then | ||
table.insert(campaigns.MD, | table.insert(campaigns.MD, campaign) | ||
end | |||
if location:find("Online") then | if location:find("Online") then | ||
table.insert(campaigns.Online, | table.insert(campaigns.Online, campaign) | ||
end | end | ||
end | end | ||
end | end | ||
-- Split the wikitext into rows and process each | -- Split the wikitext into rows and process each | ||
local rowPattern = "|- | local rowPattern = "|%-(.-)\n|%-" | ||
wikitext = wikitext .. '|- | wikitext = wikitext .. '|-' -- Append delimiter to capture the last row | ||
for row in wikitext:gmatch(rowPattern) do | for row in wikitext:gmatch(rowPattern) do | ||
processRow(row) | |||
end | end | ||
Line 72: | Line 64: | ||
end | end | ||
navbox = navbox .. '|}' | navbox = navbox .. '|}' | ||
return navbox | return navbox | ||
end | end | ||
return p | return p |