Module:Video game review score
Appearance
![]() | This module is rated as alpha. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome. |
Usage
![]() | This module depends on the following other modules: |
This module uses the Wikidata properties:
platform (P400) (see uses)
review score (P444) (see uses)
review score by (P447) (see uses)
reference URL (P854) (see uses)
retrieved (P813) (see uses)
publisher (P123) (see uses)
title (P1476) (see uses)
published in (P1433) (see uses)
Implements {{Video game review score}}
local vgR = require('Module:Sandbox/ferret/Video game reviews')
local p = {}
-- List of accepted aggregator arguments and their related QID.
local aggregators = {
['mc'] = 'Q150248',
['gr'] = 'Q40160'
}
function p._main(frame, args)
local aggregator = args["aggregator"];
local df = args["df"];
-- No aggregator, stop. Must have aggregator at least.
if(aggregator == nil or aggregator == "" or aggregators[aggregator] == nil) then
return "Invalid or missing aggregator";
end;
if(df == nil or df == "") then
df = "mdy";
end;
aggregator = aggregators[string.lower(aggregator)];
df = string.lower(df);
local game = args["game"];
local entity = nil;
if(game == nil or game == "") then
entity = mw.wikibase.getEntity();
else
entity = mw.wikibase.getEntity(game);
end;
if not entity then
return "No entity found";
end
local ret = "";
local reviewscores = entity['claims']['P444'];
local system = args["system"];
local hasSystem = not(system == nil or system == "");
if(hasSystem) then
system = string.lower(system);
end;
-- Loop all of "score by" for this title
for i = 1, #reviewscores do
local reviewer = nil
if(not(reviewscores[i]['qualifiers']['P447'] == nil or reviewscores[i]['qualifiers']['P447'][1] == nil)) then
reviewer = 'Q'..reviewscores[i]['qualifiers']['P447'][1]['datavalue']['value']['numeric-id'];
end;
if(reviewer == aggregator) then
-- If template specified a system, we need to check for the specific system and only output that one.
if(hasSystem) then
local systemName = nil;
if(not(reviewscores[i]['qualifiers']['P400'] == nil or reviewscores[i]['qualifiers']['P400'][1] == nil)) then
systemName = mw.wikibase.label('Q'..reviewscores[i]['qualifiers']['P400'][1]['datavalue']['value']['numeric-id']);
end;
if(not(systemName == nil) and string.lower(systemName) == system) then
ret = ret .. vgR.printReviewRow(frame, reviewscores[i], df);
end;
else
-- No system specified, so output each one found.
ret = ret .. vgR.printReviewRow(frame, reviewscores[i], df);
end;
end;
end;
return ret;
end;
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'User:Ferret/sandbox/Video game aggregator'
})
return p._main(frame, args)
end
return p