Lua error in package.lua at line 80: module 'Module:UtilsCode' not found.
local p = {}
local cargo = mw.ext.cargo
local utilsCode = require("Module:UtilsCode")
local utilsGame = require("Module:UtilsGame")
local utilsNavbox = require("Module:UtilsNavbox")
local utilsTable = require("Module:UtilsTable")
-- This list allows further categorization in the navbox. The module will create
-- a row for all members of the main category that fits both the latter and the
-- one entered here. It will then create a second row for the second category
-- entered here. And so on.
local SUBCATEGORIES = require("Module:Categories/Subcategories")
function p._CategorizeEntries(frame)
local args = frame:getParent().args
return p.CategorizeEntries(frame.args["plain"], args["bosses"], args["characters"], args["dungeons"], args["enemies"], args["items"], args["objects"], args["places"], args["songs"], args["stages"], args["sub-bosses"])
end
function p.CategorizeEntries(plain, bosses, characters, dungeons, enemies, items, objects, places, songs, stages, subbosses)
local result = ""
result = result .. p.PlainToNavboxes(plain)
result = result .. p.PlainToCategories(plain)
result = result .. p.GamesToCategories(bosses, characters, dungeons, enemies, items, objects, places, songs, stages, subbosses)
return result
end
function p.PlainToNavboxes(plain)
result = ""
local plaintable = mw.text.split(plain, '%s*,%s*')
local navboxTitle = ""
local rows = {}
local notCategories = ""
local dplQuery = ""
-- For every category entered in the template
for key, category in ipairs(plaintable) do
rows = {}
if not utilsCode.IsEmpty(category) then
-- Sets the title, which is "[[:Category:X|X]] in {{TLoZ|Series}}"
navboxTitle = "[[:Category:" .. category .. "|" .. category .. "]] in " .. mw.getCurrentFrame():expandTemplate{ title = "TLoZ", args = { "Series" } }
-- If subcategories exist, handles that
if not utilsCode.IsEmpty(SUBCATEGORIES[category]) then
notCategories = ""
for key2, subCategory in ipairs(SUBCATEGORIES[category]) do
notCategories = notCategories .. "|notcategory=" .. subCategory
dplQuery = mw.getCurrentFrame():preprocess("{{#dpl:|category=" .. category .. "|category=" .. subCategory .. "|namespace=|includesubpages=false|skipthispage=no|mode=inline|inlinetext={{·}}|ordermethod=titlewithoutnamespace|noresultsheader= }}")
if not (dplQuery == " ") then
table.insert(rows, {title = subCategory, content = dplQuery})
end
end
-- Other(s) row
dplQuery = mw.getCurrentFrame():preprocess("{{#dpl:|category=" .. category .. notCategories .. "|namespace=|includesubpages=false|skipthispage=no|mode=inline|inlinetext={{·}}|ordermethod=titlewithoutnamespace|noresultsheader= }}")
if not (dplQuery == " ") then
table.insert(rows, {title = "Other(s)", content = dplQuery})
end
result = result .. utilsNavbox.CreateRowNavbox(rows, navboxTitle)
-- else just outputs everything
else
dplQuery = mw.getCurrentFrame():preprocess("{{#dpl:|category=" .. category .. "|namespace=|includesubpages=false|skipthispage=no|mode=inline|inlinetext={{·}}|ordermethod=titlewithoutnamespace|noresultsheader= }}")
if not (dplQuery == " ") then
result = result .. utilsNavbox.CreateNavbox(dplQuery, navboxTitle)
end
end
end
end
return tostring(result)
end
function p.PlainToCategories(plain)
result = ""
local plaintable = mw.text.split(plain, '%s*,%s*')
for key, category in ipairs(plaintable) do
if not utilsCode.IsEmpty(category) then
result = result .. "[[Category:" .. category .. "]]"
end
end
return result
end
function p.GamesToCategories(bosses, characters, dungeons, enemies, items, objects, places, songs, stages, subbosses)
local result = ""
local categories = {}
local sortOrder = utilsGame.GetSortOrder("canon")
if not (utilsCode.IsEmpty(bosses)) then
bosses = mw.text.split(bosses, '%s*,%s*')
for _, value in ipairs(bosses) do
table.insert(categories, {"Bosses", value})
end
end
if not (utilsCode.IsEmpty(characters)) then
characters = mw.text.split(characters, '%s*,%s*')
for _, value in ipairs(characters) do
table.insert(categories, {"Characters", value})
end
end
if not (utilsCode.IsEmpty(dungeons)) then
dungeons = mw.text.split(dungeons, '%s*,%s*')
for _, value in ipairs(dungeons) do
table.insert(categories, {"Dungeons", value})
end
end
if not utilsCode.IsEmpty(enemies) then
enemies = mw.text.split(enemies, '%s*,%s*')
for _, value in ipairs(enemies) do
table.insert(categories, {"Enemies", value})
end
end
if not utilsCode.IsEmpty(items) then
items = mw.text.split(items, '%s*,%s*')
for _, value in ipairs(items) do
table.insert(categories, {"Items", value})
end
end
if not (utilsCode.IsEmpty(objects)) then
objects = mw.text.split(objects, '%s*,%s*')
for _, value in ipairs(objects) do
table.insert(categories, {"Objects", value})
end
end
if not (utilsCode.IsEmpty(places)) then
places = mw.text.split(places, '%s*,%s*')
for _, value in ipairs(places) do
table.insert(categories, {"Places", value})
end
end
if not (utilsCode.IsEmpty(songs)) then
songs = mw.text.split(songs, '%s*,%s*')
for _, value in ipairs(songs) do
table.insert(categories, {"Songs", value})
end
end
if not (utilsCode.IsEmpty(stages)) then
stages = mw.text.split(stages, '%s*,%s*')
for _, value in ipairs(stages) do
table.insert(categories, {"Stages", value})
end
end
if not (utilsCode.IsEmpty(subbosses)) then
subbosses = mw.text.split(subbosses, '%s*,%s*')
for _, value in ipairs(subbosses) do
table.insert(categories, {"Sub-Bosses", value})
end
end
for _, game in ipairs(sortOrder) do
for _2, category in ipairs(categories) do
if game == category[2] then
result = result .. "[[Category:" .. category[1] .. " in " .. utilsGame.AbbToGame(category[2], "true") .. "]]"
end
end
end
return result
end
return p