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 (Reverted edits by RheingoldRiver (talk) to last revision by MannedTooth)
Tag: Rollback
m (bugfix)
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
local Franchise = require("Module:Franchise")
-- This module serves as the code for Template:Exp Game2
 
 
local utilsArg = require("Module:UtilsArg")
  +
local utilsMarkup = require("Module:UtilsMarkup")
  +
local utilsTable = require("Module:UtilsTable")
  +
 
local p = {}
 
local p = {}
local utilsGame = require( "Module:UtilsGame" )
 
local utilsTable = require( "Module:UtilsTable" )
 
   
 
-- Main function called by Template:Exp Game
 
-- Main function called by Template:Exp Game
function p.Main( frame )
+
function p.Main(frame)
local games = frame:getParent().args
+
local args, err = utilsArg.parse(frame:getParent().args, p.Templates["Exp Game"])
return p.Display(games)
+
local result = p.printGames(args.games)
 
if err then
  +
result = result .. utilsMarkup.categories(err.categories)
 
end
 
return result
 
end
 
end
   
function p.Display(games)
+
function p.printGames(games)
  +
games = utilsTable.difference(games or {}, {""}) -- removes empty string if present
local result = "<sup>("
 
  +
if #games == 0 then
-- Remove duplicates to make sure no game appears twice.
 
  +
return ""
local games = utilsTable.removeDuplicates(games)
 
games = utilsGame.OrderGames(games, "canon")
 
 
-- For every arguments received add a note.
 
for key, value in pairs(games) do
 
local fullGame = utilsGame.AbbToGame(value, true)
 
 
-- If the game exists add a note.
 
if fullGame ~= "Unknown" then
 
 
-- If the game is the first one, do not add a "|".
 
if key ~= 1 then
 
result = result .. " | "
 
end
 
result = result .. "<span class='explain' title='" .. fullGame
 
result = result .. "' style='color:yellow'><b>"
 
result = result .. value .. "</b></span>"
 
end
 
 
end
 
end
 
games = utilsTable.map(games, p.printGame)
 
  +
games = table.concat(games, " &#124; ") -- &#124 is the HTML entity for the pipe character. Needs to be entered like this in order to not break tables and such
result = result .. ")</sup>"
 
  +
return "<sup>("..games..")</sup>"
 
return result
 
 
end
 
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
 
return p

Latest revision as of 00:52, 31 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, " &#124; ") -- &#124 is the HTML entity for the pipe character. Needs to be entered like this in order to not break tables and such
	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