Module:Categories

local p = {} local utilsCode = require("Module:UtilsCode") local utilsGame = require("Module:UtilsGame")

function p._CategorizeEntries(frame) local args = frame:getParent.args return p.CategorizeEntries(frame.args["plain"], args["bosses"], args["characters"], args["enemies"], args["items"], args["objects"], args["places"], args["songs"], args["sub-bosses"]) end

function p.CategorizeEntries(plain, bosses, characters, enemies, items, objects, places, songs, subbosses) local result = "" result = result .. p.PlainToCategories(plain) result = result .. p.GamesToCategories(bosses, characters, enemies, items, objects, places, songs, subbosses) return 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 .. ""		end end return result end

function p.GamesToCategories(bosses, characters, enemies, items, objects, places, songs, 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(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(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 .. ""			end end end return result end

return p