Zelda Wiki

Want to contribute to this wiki?
Sign up for an account, and get started!

Come join the Zelda Wiki community Discord server!

READ MORE

Zelda Wiki
m (Protected "Module:Exp Game": Critical wiki page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
No edit summary
Line 17: Line 17:
   
 
function p.printGames(games)
 
function p.printGames(games)
games = games or {}
+
games = utilsTable.difference(games or {}, {""}) -- removes empty string if present
games = utilsTable.intersection(Franchise.enum({ includeSeries = true }), games) -- sorts the games, removes duplicates and invalid values
 
games = utilsTable.difference(games, {""}) -- removes empty string if present
 
 
if #games == 0 then
 
if #games == 0 then
 
return ""
 
return ""
Line 46: Line 44:
 
desc = "A comma-separated list of one or more [[Data:Franchise|game codes]].",
 
desc = "A comma-separated list of one or more [[Data:Franchise|game codes]].",
 
split = true,
 
split = true,
  +
sortAndRemoveDuplicates = true,
 
}
 
}
 
},
 
},

Revision as of 19:32, 4 August 2020

This is the main module for the following templates:
local Franchise = require("Module:Franchise")
local utilsArg = require("Module:UtilsArg")
local utilsMarkup = require("Module:UtilsMarkup")
local utilsTable = require("Module:UtilsTable")

local p = {}

-- Main function called by Template:Exp Game
function p.Main(frame)
	local args, err = utilsArg.parse(frame:getParent().args, p.Templates["Exp Game"])
	local result = p.printGames(args.games)
	if err then
		result = result .. utilsMarkup.categories(err.categories)
	end
	return result
end

function p.printGames(games)
	games = utilsTable.difference(games or {}, {""}) -- removes empty string if present
	if #games == 0 then
		return ""
	end
	games = utilsTable.map(games, p.printGame)
	games = table.concat(games, " | ")
	return "<sup>("..games..")</sup>"
end

function p.printGame(game)
	local result = utilsMarkup.tooltip(game, Franchise.shortName(game), "highlight")
	return utilsMarkup.bold(result)
end

p.Templates = {
	["Exp Game"] = {
		purpose = "{{Exp Game/Purpose}}",
		format = "inline",
		params = {
			[1] = {
				name = "games",
				placeholder = "game1, game2, ..., gameN",
				type = "string",
				required = true,
				enum = Franchise.enum({ includeSeries = true }),
				desc = "A comma-separated list of one or more [[Data:Franchise|game codes]].",
				split = true,
				sortAndRemoveDuplicates = true,
			}
		},
		examples = {
			{"OoT"},
			{"Series, OoT, MM"},
			{"MM, OoT, MM, OoT"},
			{},
			{""},
			{"fakeGame"},
			{"OoT, fakeGame, MM"}
		}
	}
}

return p