Jump to content

Module:Video game series reviews/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Ferret (talk | contribs) at 19:00, 25 April 2016 (Undid revision 717100753 by Ferret (talk)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local Vgrs = require('Module:Video game review score/sandbox')

local p = {}

local wikidataUsed = false;
local mc, gr, fam, sales, year = false, false, false, false, false -- Column flags

local function row(frame, args, i)
	local ret = ""
	
	local vgrsReady, vgrsScore = false, nil
	if(args["qid" ..i]) then
		vgrsScore = Vgrs.setGame(args["qid" ..i]);

		if(vgrsScore == nil) then
			vgrsReady = true;
		end;	
	end

	ret = ret .. "|-\n"
	ret = ret .. "! scope=\"row\" | ''" .. args["game" ..i]
	if(vgrsReady) then
		ret = ret .. " " .. Vgrs.getUpdateLink();
	end;
	ret = ret .. "'' \n"
	if year then
		ret = ret .. "| style=\"text-align: center;\" | " .. (args["year" ..i] or '') .. " \n"
	end	
	if sales then
		ret = ret .. "| style=\"text-align: center;\" | " .. (args["sales" ..i] or '') .. " \n"
	end
	if fam then
		ret = ret .. "| style=\"text-align: center;\" | " .. (args["fam" ..i] or '') .. " \n"
	end
	if gr then
		ret = ret .. "| style=\"text-align: center;\" | " 
		if(args["gr" ..i]) then
			ret = ret .. args["gr" ..i]
		elseif(args["qid" ..i]) then
			local score = Vgrs.setReviewer("gr");

			if(score == nil) then
				score = Vgrs.printReviewScores(frame);
			end;
			
			ret = ret .. score;
		end;
		ret = ret .. " \n"
	end
	if mc then
		ret = ret .. "| style=\"text-align: center;\" | " 
		if(args["mc" ..i]) then
			ret = ret .. args["mc" ..i]
		elseif(args["qid" ..i]) then
			local score = Vgrs.setReviewer("mc");

			if(score == nil) then
				score = Vgrs.printReviewScores(frame);
			end;
			
			ret = ret .. score;
		end;
		ret = ret .. " \n"
	end
	
	return ret
end

function p.main(frame)
	local args = getArgs(frame)
	return p._main(frame, args)
end

function p._main(frame, args)
	local ret = ""
	local highGame = 0
	
	Vgrs.setDateFormat("mdy");
	Vgrs.setSystem(nil);
	Vgrs.setGenerateReferences(true);
	Vgrs.setShowSystem(true);
	Vgrs.setShowUpdateLink(false);
	
	for k, v in pairs(args) do
		if string.find(k, "mc%d+") then
			mc = true;
		elseif string.find(k, "gr%d+") then
			gr = true;
		elseif string.find(k, "fam%d+") then
			fam = true;
		elseif string.find(k, "sales%d+") then
			sales = true;
		elseif string.find(k, "year%d+") then
			year = true;
		elseif string.find(k, "game%d+") or string.find(k, "qid%d+") then
			local num = tonumber(string.match(k, "%d+"))
			if not(num == nil) and highGame < num then
				highGame = num
			end;
		end;
	end

	if args["mc"] then
		mc = yesno(args.mc, false)
	end
	if args["gr"] then
		gr = yesno(args.gr, false)
	end	
	if args["fam"] then
		fam = yesno(args.fam, false)
	end		
	if args["sales"] then
		sales = yesno(args.sales, false)
	end		
	
	ret = ret .. "{| class=\"wikitable plainrowheaders\" style=\"font-size: 90%; float: right; clear: right; margin:0.5em 0 0.5em 1em;\"\n"
	
	ret = ret .."|+ style=\"font-size: 111.11%;\" | "
	if args.title then
		ret = ret .. args.title
	elseif sales then
		if fam then
			ret = ret .. "Sales and review scores"
		elseif gr or mc then
			ret = ret .. "Sales and aggregate review scores"
		else
			ret = ret .. "Sales"
		end
	elseif fam then
		if gr or mc then
			ret = ret .. "Japan and Western review scores"
		else
			ret = ret .. "Famitsu review scores"
		end
	else
		ret = ret .. "Aggregate review scores"
	end

	if args.updated then
		ret = ret .. "<br /><small>''As of " .. args.updated ..".''</small>"
	end
	ret = ret .. " \n"
	
	ret = ret .. "! scope=\"col\" | Game \n"
	if year then
		ret = ret .. "! scope=\"col\" | Year\n"
	end	
	if sales then
		ret = ret .. "! scope=\"col\" | " .. (args.sales_title or "Units sold") .. " \n"
	end
	if fam then
		ret = ret .. "! scope=\"col\" | " .. (args.fam_title or  "''[[Famitsū scores|Famitsu]]''") .. " \n"
	end
	if gr then
		ret = ret .. "! scope=\"col\" | " .. (args.gr_title or  "[[GameRankings]]") .. " \n"
	end
	if mc then
		ret = ret .. "! scope=\"col\" | " .. (args.mc_title or  "[[Metacritic]]") .. " \n"
	end
	
	for i = 1, highGame do
		if args["game" ..i] or args["qid" ..i] then
			ret = ret .. row(frame, args, i)
		end
	end

	ret = ret .. "|}"

	return ret
end

return p