More actions
Content deleted Content added
No edit summary |
// via Wikitext Extension for VSCode |
||
Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
function p.creatureCategories(frame) |
|||
local name = frame.args[1] or "" |
|||
if name:find("HP") then |
|||
return "[[Category:Creatures by HP]]" |
|||
elseif name:find("MP") then |
|||
return "[[Category:Creatures by MP]]" |
|||
elseif name:find("Size") then |
|||
return "[[Category:Creatures by Size]]" |
|||
elseif name:find("INT") then |
|||
return "[[Category:Creatures by INT]]" |
|||
elseif name:find("STR") then |
|||
return "[[Category:Creatures by STR]]" |
|||
elseif name:find("SNK") then |
|||
return "[[Category:Creatures by SNK]]" |
|||
elseif name:find("MOV") then |
|||
return "[[Category:Creatures by MOV]]" |
|||
elseif name:find("PER") then |
|||
return "[[Category:Creatures by PER]]" |
|||
elseif name:find("lifespan") then |
|||
return "[[Category:Creatures by lifespan]]" |
|||
else |
|||
return "" |
|||
end |
|||
end |
|||
function p.generateCategories(frame) |
function p.generateCategories(frame) |
Revision as of 23:55, 12 August 2025
Documentation for this module may be created at Module:CatType/doc
local p = {}
function p.creatureCategories(frame)
local name = frame.args[1] or ""
if name:find("HP") then
return "[[Category:Creatures by HP]]"
elseif name:find("MP") then
return "[[Category:Creatures by MP]]"
elseif name:find("Size") then
return "[[Category:Creatures by Size]]"
elseif name:find("INT") then
return "[[Category:Creatures by INT]]"
elseif name:find("STR") then
return "[[Category:Creatures by STR]]"
elseif name:find("SNK") then
return "[[Category:Creatures by SNK]]"
elseif name:find("MOV") then
return "[[Category:Creatures by MOV]]"
elseif name:find("PER") then
return "[[Category:Creatures by PER]]"
elseif name:find("lifespan") then
return "[[Category:Creatures by lifespan]]"
else
return ""
end
end
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
-- If it's not spells or skills, check if it's an abilities page
if baseCategory:match("abilities$") then
-- Extract the last two words of the base category name
local words = {}
for word in baseCategory:gmatch("%w+") do
table.insert(words, word)
end
if #words >= 2 then
local lastTwoWords = words[#words - 1] .. " " .. words[#words]
local firstWordCapitalized = lastTwoWords:gsub("^(%w)", string.upper)
local relatedCategory = "Category:" .. firstWordCapitalized
-- Check if the related category exists
local relatedPage = mw.title.new(relatedCategory)
if relatedPage and relatedPage.exists then
return "[[" .. relatedCategory .. "]]"
end
end
return "Warning: Unable to determine related category or it doesn't exist."
else
return "Error: Unable to determine type ('spells', 'skills', or 'abilities') from category name."
end
end
-- Determine the parent category by replacing the detected type with "abilities"
local parentCategory = "Category:" .. baseCategory:gsub(type, "abilities")
-- Attempt to retrieve and expand 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 rawParentContent = parentPage:getContent()
if not rawParentContent then
return "Error: Unable to retrieve the content of the parent category: " .. parentCategory
end
-- local tweakedParentContent = rawParentContent:gsub("{{CatType}}", "{{CatType2}}")
-- Expand any templates in the parent category's content
local expandedParentContent = frame:preprocess(rawParentContent)
-- Replace every instance of "abilities]]" with the detected type (e.g., "spells]]" or "skills]]")
local updatedContent = expandedParentContent:gsub("Abilities%]%]", type:gsub("spells", "Spells"):gsub("skills", "Skills") .. "]]")
updatedContent = updatedContent:gsub("abilities%]%]", type .. "]]")
-- Return the updated content along with the parent category
return "[[" .. parentCategory .. "]]\n" .. updatedContent
end
return p