Jump to content

Module:Video game wikidata

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Ferret (talk | contribs) at 13:58, 13 April 2016. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local Date = require('Module:Date')._Date

local p = {}

-- Translation table for converting numeric-IDs to shorthand aliases.
local systems = {
	[10677] = 'PS1',
	[1323662] = 'PS1', -- Placeholder, this is actually the series but could be mistakenly used for PS1.
	[10680] = 'PS2',
	[10683] = 'PS3',
	[5014725] = 'PS4',
	[16338] = 'PC',
	[8079] = 'Wii',
	[56942] = 'WiiU',
	[132020] = 'XBOX',
	[48263] = 'X360',
	[13361286] = 'XONE',
}

function p.getSystemAlias(numericId)
	return systems[numericId];
end

function p.printReviewRow(frame, reviewscore, df)
	local ret = ""

	local system = nil;
	local score = nil;
	local reference = nil;

	if(not(reviewscore['qualifiers']['P400'] == nil or reviewscore['qualifiers']['P400'][1] == nil)) then
		system = systems[reviewscore['qualifiers']['P400'][1]['datavalue']['value']['numeric-id']];
	end	
	if(not (system == nil or system == "")) then
		ret = ret.."("..system..") ";
	end;

	score = reviewscore['mainsnak']['datavalue']['value'];	
	if(not (score == nil or score == "")) then
		ret = ret..score;
	end;

	if(not (reviewscore['references'] == nil or reviewscore['references'][1] == nil)) then
		if(not (reviewscore['references'][1]['snaks']['P854'] == nil or reviewscore['references'][1]['snaks']['P854'][1] == nil)) then
			reference = reviewscore['references'][1]['snaks']['P854'][1]['datavalue']['value'];	
		end;

		if(not (reference == nil or reference == "")) then
			local cite = "{{cite web|url="..reference;
			
			local timestamp = nil;
			local publisher = nil;
			local title = nil;

			if(not (reviewscore['references'][1]['snaks']['P813'] == nil or reviewscore['references'][1]['snaks']['P813'][1] == nil)) then
				timestamp = reviewscore['references'][1]['snaks']['P813'][1]['datavalue']['value']['time'];
			end;
			if(not (reviewscore['references'][1]['snaks']['P123'] == nil or reviewscore['references'][1]['snaks']['P123'][1] == nil)) then
				publisher = mw.wikibase.label('Q'..reviewscore['references'][1]['snaks']['P123'][1]['datavalue']['value']['numeric-id']);
			end;
			if(not (reviewscore['references'][1]['snaks']['P1476'] == nil or reviewscore['references'][1]['snaks']['P1476'][1] == nil)) then
				title = reviewscore['references'][1]['snaks']['P1476'][1]['datavalue']['value']['text'];
			end;

			if(not(title == nil or title == "")) then
				cite = cite .. "|title="..title;
			end;
			if(not(publisher == nil or publisher == "")) then
				cite = cite .. "|publisher="..publisher;
			end;
			if(not(timestamp == nil or timestamp == "")) then
				local year = string.sub(timestamp,2,5);
				local month = string.sub(timestamp,7,8);
				local day = string.sub(timestamp,10,11);
				local accessdate = Date(year, month, day):text(df);

				cite = cite .. "|accessdate="..accessdate;
			end;
		
			cite = cite..'}}';
			cite = frame:extensionTag{ name = "ref", args = {name=name}, content=cite };
			ret = ret..cite;
		end;
	end;

	return ret .. "<br />";
end

return p