Module:CatType: Difference between revisions
From Teriock
More actions
No edit summary |
No edit summary |
||
| Line 17: | Line 17: | ||
local parentCategory = baseCategory:gsub(type, "abilities") | local parentCategory = baseCategory:gsub(type, "abilities") | ||
-- | -- Attempt to retrieve the content of the parent category | ||
local | local parentPage = mw.title.new(parentCategory) | ||
if not parentPage then | |||
return "Error: Unable to access the parent category page object: " .. parentCategory | |||
end | |||
local parentContent = parentPage:getContent() | |||
if not parentContent then | if not parentContent then | ||
return "Error: Unable to retrieve the content of the parent category: " .. parentCategory | return "Error: Unable to retrieve the content of the parent category: " .. parentCategory | ||
Revision as of 13:18, 12 January 2025
Documentation for this module may be created at Module:CatType/doc
local p = {}
function p.generateCategories(frame)
local baseCategory = frame.args[1] or ""
if baseCategory == "" then
return "Error: No base category provided."
end
-- Determine the type based on the base category name
local type = baseCategory:match("spells") or baseCategory:match("skills")
if not type then
return "Error: Unable to determine type ('spells' or 'skills') from category name."
end
-- Determine the parent category by replacing the detected type with "abilities"
local parentCategory = baseCategory:gsub(type, "abilities")
-- Attempt to retrieve the content of the parent category
local parentPage = mw.title.new(parentCategory)
if not parentPage then
return "Error: Unable to access the parent category page object: " .. parentCategory
end
local parentContent = parentPage:getContent()
if not parentContent then
return "Error: Unable to retrieve the content of the parent category: " .. parentCategory
end
-- Extract categories from the parent category's content
local categories = {}
for category in parentContent:gmatch("%[%[Category:([^%]]+)%]%]") do
-- Replace "abilities" with the detected type in each category
local updatedCategory = category:gsub("abilities", type)
table.insert(categories, "[[Category:" .. updatedCategory .. "]]")
end
-- Return the updated categories as a newline-separated string
return table.concat(categories, "\n")
end
return p