Модул:Video game reviews — разлика између измена
Пређи на навигацију
Пређи на претрагу
м (Враћене измене Ранко Николић (разговор) на последњу измену корисника Obsuser) |
м (1 измена увезена) |
||
| (Нису приказане 2 међуизмене 2 корисника) | |||
| Ред 2: | Ред 2: | ||
local p = {} | local p = {} | ||
local data = require('Module:Video game reviews/data') | local data = require('Module:Video game reviews/data') | ||
local yesno = require('Module:Yesno') | local yesno = require('Module:Yesno') | ||
local getArgs | local getArgs | ||
| Ред 21: | Ред 21: | ||
local function getArgKeyTables(args) | local function getArgKeyTables(args) | ||
local reviewers | local reviewers, aggregators, awards = {}, {}, {} | ||
local reviewersCount, aggregatorsCount, awardsCount = 0, 0, 0 | |||
for k in pairs(args) do | for k in pairs(args) do | ||
if string.match(k, '^rev%d+$') or mw.ustring.match(k, '^рец%d+$') then | if string.match(k, '^rev%d+$') or mw.ustring.match(k, '^рец%d+$') then | ||
table.insert(reviewers, k) | table.insert(reviewers, k) | ||
reviewersCount = reviewersCount +1 | |||
elseif string.match(k, '^agg%d+$') or mw.ustring.match(k, '^агр%d+$') then | elseif string.match(k, '^agg%d+$') or mw.ustring.match(k, '^агр%d+$') then | ||
table.insert(aggregators, k) | table.insert(aggregators, k) | ||
aggregatorsCount = aggregatorsCount + 1 | |||
elseif string.match(k, '^award%d+$') or mw.ustring.match(k, '^наг%d+$') then | elseif string.match(k, '^award%d+$') or mw.ustring.match(k, '^наг%d+$') then | ||
table.insert(awards, k) | table.insert(awards, k) | ||
awardsCount = awardsCount + 1 | |||
end | end | ||
end | end | ||
| Ред 37: | Ред 39: | ||
end | end | ||
table.sort(reviewers, comparator) | table.sort(reviewers, comparator) | ||
table.sort(aggregators, comparator) | table.sort(aggregators, comparator) | ||
table.sort(awards, comparator) | table.sort(awards, comparator) | ||
return reviewers | return reviewers, aggregators, awards, reviewersCount, aggregatorsCount, awardsCount | ||
end | end | ||
local function getProvidedReviewersAndAggregators(args, usePlatforms) | local function getProvidedReviewersAndAggregators(args, usePlatforms) | ||
local providedReviewers | local providedReviewers, providedAggregators = {}, {} | ||
local providedReviewersCount, providedAggregatorsCount = 0, 0 | |||
if usePlatforms then | if usePlatforms then | ||
local seen = {} | local seen = {} | ||
| Ред 55: | Ред 57: | ||
if data.reviewers[halfarg] then | if data.reviewers[halfarg] then | ||
table.insert(providedReviewers, halfarg) | table.insert(providedReviewers, halfarg) | ||
providedReviewersCount = providedReviewersCount +1 | |||
elseif data.aggregators[halfarg] then | elseif data.aggregators[halfarg] then | ||
table.insert(providedAggregators, halfarg) | table.insert(providedAggregators, halfarg) | ||
providedAggregatorsCount = providedAggregatorsCount +1 | |||
end | end | ||
end | end | ||
| Ред 68: | Ред 70: | ||
if data.reviewers[k] then | if data.reviewers[k] then | ||
table.insert(providedReviewers, k) | table.insert(providedReviewers, k) | ||
providedReviewersCount = providedReviewersCount +1 | |||
elseif data.aggregators[k] then | elseif data.aggregators[k] then | ||
table.insert(providedAggregators, k) | table.insert(providedAggregators, k) | ||
providedAggregatorsCount = providedAggregatorsCount +1 | |||
end | end | ||
end | end | ||
| Ред 78: | Ред 80: | ||
table.sort(providedReviewers, function(a, b) | table.sort(providedReviewers, function(a, b) | ||
return data.reviewers[a].sortkey < data.reviewers[b].sortkey | return data.reviewers[a].sortkey < data.reviewers[b].sortkey | ||
end) | end) | ||
table.sort(providedAggregators, function(a, b) | table.sort(providedAggregators, function(a, b) | ||
return data.aggregators[a].sortkey < data.aggregators[b].sortkey | return data.aggregators[a].sortkey < data.aggregators[b].sortkey | ||
end) | end) | ||
return providedReviewers, | return providedReviewers, providedAggregators, providedReviewersCount, providedAggregatorsCount | ||
end | end | ||
| Ред 186: | Ред 185: | ||
end | end | ||
local function renderReviews(builder, providedReviewers | local function renderReviews(builder, providedReviewers, providedAggregators, activeSystems, customAggregatorKeys, customReviewerKeys, args, reviewerCount, aggregatorCount) | ||
builder = builder:tag('table') | builder = builder:tag('table') | ||
:addClass('infobox wikitable') | :addClass('infobox wikitable') | ||
| Ред 195: | Ред 194: | ||
:css('margin', '0em') | :css('margin', '0em') | ||
local | local hasReviewers = #providedReviewers ~= 0 or #customReviewerKeys ~= 0 | ||
local hasAggregators = #providedAggregators ~= 0 or #customAggregatorKeys ~= 0 | |||
local | local reviewScore, aggregateScore = "", "" | ||
local reviewScore = | |||
if reviewerCount == 1 then | |||
reviewScore = data.i18n.reviewScore | |||
else | |||
reviewScore = data.i18n.reviewScores | |||
end | |||
if aggregatorCount == 1 then | |||
aggregateScore = data.i18n.aggregateScore | |||
else | |||
aggregateScore = data.i18n.aggregateScores | |||
end | |||
builder:css('font-size', '100%') | builder:css('font-size', '100%') | ||
if #activeSystems ~= 0 then | if #activeSystems ~= 0 then | ||
builder:wikitext(data.i18n.multiplatformCategory) | builder:wikitext(data.i18n.multiplatformCategory) | ||
local na = yesno(args.na | local na = yesno(args.na) | ||
local showplatforms = #activeSystems ~= 1 or yesno(args.showplatforms | local showplatforms = #activeSystems ~= 1 or yesno(args.showplatforms) | ||
if | if hasReviewers then | ||
if showplatforms then | if showplatforms then | ||
renderHeadingRowWithSystems(builder, reviewScore, activeSystems) | renderHeadingRowWithSystems(builder, reviewScore, activeSystems) | ||
| Ред 220: | Ред 228: | ||
end | end | ||
end | end | ||
if | if hasAggregators then | ||
if | if hasReviewers then | ||
renderMainHeading(builder, #activeSystems+1, aggregateScore) | renderMainHeading(builder, #activeSystems+1, aggregateScore) | ||
elseif showplatforms then | elseif showplatforms then | ||
| Ред 253: | Ред 247: | ||
builder:wikitext(data.i18n.singleplatformCategory) | builder:wikitext(data.i18n.singleplatformCategory) | ||
builder:css('font-size', '100%') | builder:css('font-size', '100%') | ||
if | if hasAggregators then | ||
renderHeadingRow(builder, aggregateScore, data.i18n.aggregator) | renderHeadingRow(builder, aggregateScore, data.i18n.aggregator) | ||
for _,v in ipairs(providedAggregators) do | for _,v in ipairs(providedAggregators) do | ||
| Ред 262: | Ред 256: | ||
end | end | ||
end | end | ||
if | if hasReviewers then | ||
renderHeadingRow(builder, reviewScore, data.i18n.publication) | renderHeadingRow(builder, reviewScore, data.i18n.publication) | ||
for _,v in ipairs(providedReviewers) do | for _,v in ipairs(providedReviewers) do | ||
| Ред 268: | Ред 262: | ||
end | end | ||
for _,v in ipairs(customReviewerKeys) do | for _,v in ipairs(customReviewerKeys) do | ||
renderRating(builder, args[v], args[v .. 'Score'] or args[v .. 'Оцена']) | renderRating(builder, args[v], args[v .. 'Score'] or args[v .. 'Оцена']) | ||
end | end | ||
| Ред 283: | Ред 268: | ||
end | end | ||
local function renderAwards(builder, args, awardKeys, borderTop) | local function renderAwards(builder, args, awardKeys, borderTop, awardCount) | ||
builder = builder:tag('table') | builder = builder:tag('table') | ||
:addClass('infobox wikitable') | :addClass('infobox wikitable') | ||
| Ред 292: | Ред 277: | ||
:attr('cellspacing', 0) | :attr('cellspacing', 0) | ||
renderMainHeading(builder, 2, data.i18n | if awardCount == 1 then | ||
renderMainHeading(builder, 2, data.i18n.award, borderTop) | |||
else | |||
renderMainHeading(builder, 2, data.i18n.awards, borderTop) | |||
end | |||
builder:tag('tr') | builder:tag('tr') | ||
| Ред 314: | Ред 303: | ||
end | end | ||
local function renderMainTable(providedReviewers | local function renderMainTable(providedReviewers, providedAggregators, awardKeys, activeSystems, customAggregatorKeys, customReviewerKeys, args, reviewerCount, aggregatorCount, awardCount) | ||
local tbl = mw.html.create('table') | local tbl = mw.html.create('table') | ||
:attr('cellpadding', 0) | :attr('cellpadding', 0) | ||
| Ред 323: | Ред 312: | ||
:css('text-align', 'center') | :css('text-align', 'center') | ||
:css('font-size', '80%') | :css('font-size', '80%') | ||
:css('float', args.align | :css('float', args.align or 'right') | ||
:css('clear', args.align | :css('clear', args.align or 'right') | ||
if #activeSystems == 0 then | if #activeSystems == 0 then | ||
-- Width: 20% Seems better since it scales with the article size. | -- Width: 20% Seems better since it scales with the article size. | ||
tbl | tbl | ||
:css('width', args.width | :css('width', args.width or '23em') | ||
end | end | ||
if | if args.title and args.state and (args.state == 'autocollapse' | ||
or args.state == 'collapsed' or args.state == 'expanded | or args.state == 'collapsed' or args.state == 'expanded') then | ||
tbl | tbl | ||
:addClass('collapsible') | :addClass('collapsible') | ||
:addClass(args.state | :addClass(args.state) | ||
end | end | ||
renderTitleRow(tbl, args.title) | renderTitleRow(tbl, args.title) | ||
if args.subtitle | if args.subtitle then | ||
tbl:tag('tr'):tag('th') | tbl:tag('tr'):tag('th') | ||
:css('font-size', '120%') | :css('font-size', '120%') | ||
:wikitext(args.subtitle | :wikitext(args.subtitle) | ||
end | end | ||
renderReviews(tbl:tag('tr'):tag('td'), providedReviewers | renderReviews(tbl:tag('tr'):tag('td'), providedReviewers, providedAggregators, activeSystems, customAggregatorKeys, customReviewerKeys, args, reviewerCount, aggregatorCount) | ||
if #awardKeys ~= 0 then | if #awardKeys ~= 0 then | ||
renderAwards(tbl:tag('tr'):tag('td'), args, awardKeys, (#customAggregatorKeys ~= 0 or #customReviewerKeys | renderAwards(tbl:tag('tr'):tag('td'), args, awardKeys, (#customAggregatorKeys ~= 0 or #customReviewerKeys ~= 0 or #providedAggregators ~= 0 or #providedReviewers ~= 0) and 'none' or nil, awardCount) | ||
end | end | ||
return tbl | return tbl | ||
end | end | ||
function p._reviewbox(args) | |||
function p._reviewbox( | |||
local activeSystems = getActiveSystems(args) | local activeSystems = getActiveSystems(args) | ||
local customReviewerKeys | local customReviewerKeys, customAggregatorKeys, awardKeys, customReviewerCount, customAggregatorCount, awardCount = getArgKeyTables(args) | ||
local providedReviewers, | local providedReviewers, providedAggregators, providedReviewersCount, providedAggregatorsCount = getProvidedReviewersAndAggregators(args, #activeSystems ~= 0) | ||
local | local reviewerCount = customReviewerCount + providedReviewersCount | ||
if #customAggregatorKeys ~= 0 or #customReviewerKeys | local aggregatorCount = customAggregatorCount + providedAggregatorsCount | ||
return renderMainTable(providedReviewers | if #customAggregatorKeys ~= 0 or #customReviewerKeys ~= 0 or #providedAggregators ~= 0 or #providedReviewers ~= 0 or #awardKeys ~= 0 then | ||
return renderMainTable(providedReviewers, providedAggregators, awardKeys, activeSystems, customAggregatorKeys, customReviewerKeys, args, reviewerCount, aggregatorCount, awardCount) | |||
elseif mw.title.getCurrentTitle().namespace == 0 then | elseif mw.title.getCurrentTitle().namespace == 0 then | ||
return data.i18n.emptyCategory | return data.i18n.emptyCategory | ||
| Ред 435: | Ред 359: | ||
getArgs = require('Module:Arguments').getArgs | getArgs = require('Module:Arguments').getArgs | ||
end | end | ||
return p._reviewbox( | return p._reviewbox(getArgs(frame, {wrappers = data.i18n.wrapper, trim = false, translate = data.argi18n})) | ||
end | end | ||
return p | return p | ||
Тренутна верзија на датум 5. фебруар 2021. у 13:51
| Овај модул је предмет заштите страница. То је веома коришћен модул у употреби огромног броја страница или се супституише веома често. Због вандализма или грешака које би утицале на много страница или тривијалног уређивања које би могло да изазове проблеме на серверима, модул је заштићен од уређивања. |
Овај модул покреће шаблон {{Рецензије видео-игре}}. Молимо погледајте страницу шаблона за упутство за употребу.
Категорије за праћење/одржавање
- Категорија:Чланци који користе шаблон Рецензије видео-игре у моду за више платформи
- Категорија:Чланци који користе шаблон Рецензије видео-игре у моду за једну платформу
Модул са подацима
require('Module:No globals')
local p = {}
local data = require('Module:Video game reviews/data')
local yesno = require('Module:Yesno')
local getArgs
local function getActiveSystems(args)
local activeSystems = {}
for k,v in pairs(args) do
if data.systems[k] and yesno(v) then
table.insert(activeSystems, k)
end
end
table.sort(activeSystems, function(a, b)
return data.systems[a].sortkey < data.systems[b].sortkey
end)
return activeSystems
end
local function getArgKeyTables(args)
local reviewers, aggregators, awards = {}, {}, {}
local reviewersCount, aggregatorsCount, awardsCount = 0, 0, 0
for k in pairs(args) do
if string.match(k, '^rev%d+$') or mw.ustring.match(k, '^рец%d+$') then
table.insert(reviewers, k)
reviewersCount = reviewersCount +1
elseif string.match(k, '^agg%d+$') or mw.ustring.match(k, '^агр%d+$') then
table.insert(aggregators, k)
aggregatorsCount = aggregatorsCount + 1
elseif string.match(k, '^award%d+$') or mw.ustring.match(k, '^наг%d+$') then
table.insert(awards, k)
awardsCount = awardsCount + 1
end
end
local function comparator(a, b)
return tonumber(a:match('%d+')) < tonumber(b:match('%d+'))
end
table.sort(reviewers, comparator)
table.sort(aggregators, comparator)
table.sort(awards, comparator)
return reviewers, aggregators, awards, reviewersCount, aggregatorsCount, awardsCount
end
local function getProvidedReviewersAndAggregators(args, usePlatforms)
local providedReviewers, providedAggregators = {}, {}
local providedReviewersCount, providedAggregatorsCount = 0, 0
if usePlatforms then
local seen = {}
for k in pairs(args) do
local splitPos = string.find(k, '_')
if splitPos then
local halfarg = string.sub(k, 1, splitPos - 1)
if not seen[halfarg] then
seen[halfarg] = true
if data.reviewers[halfarg] then
table.insert(providedReviewers, halfarg)
providedReviewersCount = providedReviewersCount +1
elseif data.aggregators[halfarg] then
table.insert(providedAggregators, halfarg)
providedAggregatorsCount = providedAggregatorsCount +1
end
end
end
end
else
for k in pairs(args) do
if not string.find(k, '_') then
if data.reviewers[k] then
table.insert(providedReviewers, k)
providedReviewersCount = providedReviewersCount +1
elseif data.aggregators[k] then
table.insert(providedAggregators, k)
providedAggregatorsCount = providedAggregatorsCount +1
end
end
end
end
table.sort(providedReviewers, function(a, b)
return data.reviewers[a].sortkey < data.reviewers[b].sortkey
end)
table.sort(providedAggregators, function(a, b)
return data.aggregators[a].sortkey < data.aggregators[b].sortkey
end)
return providedReviewers, providedAggregators, providedReviewersCount, providedAggregatorsCount
end
local function renderTitleRow(tbl, title)
local titleCell = tbl:tag('tr'):tag('th'):css('font-size', '120%')
if title then
titleCell
:wikitext(title)
else
titleCell
:addClass('Одзив')
:wikitext(data.i18n.reception)
end
end
local function renderMainHeading(builder, colspan, headingText, borderTop)
builder:tag('tr'):tag('th')
:attr('colspan', colspan)
:css('background', '#d1dbdf')
:css('font-size', '120%')
:css('border-top', borderTop)
:wikitext(headingText)
end
local function renderHeadingRowWithSystems(builder, mainHeading, activeSystems)
renderMainHeading(builder, #activeSystems + 1, mainHeading)
builder:tag('tr')
:tag('th')
:attr('rowspan', '2')
:css('background', '#e8f4f8')
:css('text-align', 'center')
:css('vertical-align', 'middle')
:wikitext(data.i18n.publication)
:done()
:tag('th')
:attr('colspan', #activeSystems)
:css('background', '#e8f4f8')
:css('vertical-align', 'middle')
:wikitext(data.i18n.score)
builder = builder:tag('tr')
for _,v in ipairs(activeSystems) do
builder:tag('th'):wikitext(data.systems[v].name)
end
end
local function renderHeadingRow(builder, mainHeading, nameHeading)
renderMainHeading(builder, 2, mainHeading)
builder
:tag('tr')
:tag('th')
:css('background', '#e8f4f8')
:css('text-align', 'center')
:css('vertical-align', 'middle')
:wikitext(nameHeading)
:done()
:tag('th')
:css('background', '#e8f4f8')
:css('vertical-align', 'middle')
:wikitext(data.i18n.score)
end
local function renderRatingsBySystem(builder, code, name, activeSystems, args, na)
builder = builder:tag('tr')
builder:tag('td')
:css('vertical-align','middle')
:wikitext(name)
for _,v in ipairs(activeSystems) do
local combinedCode = code .. '_' .. v
local cell = builder:tag('td')
if args[combinedCode] then
cell
:css('vertical-align', 'middle')
:css('font-size', '110%')
:wikitext(args[combinedCode])
elseif na then
cell
:css('color', 'lightgray')
:css('vertical-align','middle')
:css('text-align', 'center')
:css('font-size', '110%')
:addClass('table-na')
:wikitext(data.i18n.na)
end
end
end
local function renderRating(builder, name, rating)
builder:tag('tr')
:tag('td')
:css('text-align', 'center')
:css('vertical-align', 'middle')
:wikitext(name)
:done()
:tag('td')
:css('text-align', 'center')
:css('font-size', '110%')
:wikitext(rating)
end
local function renderReviews(builder, providedReviewers, providedAggregators, activeSystems, customAggregatorKeys, customReviewerKeys, args, reviewerCount, aggregatorCount)
builder = builder:tag('table')
:addClass('infobox wikitable')
:attr('cellpadding', 0)
:attr('cellspacing', 0)
:css('width', '100%')
:css('border-bottom', 'none')
:css('margin', '0em')
local hasReviewers = #providedReviewers ~= 0 or #customReviewerKeys ~= 0
local hasAggregators = #providedAggregators ~= 0 or #customAggregatorKeys ~= 0
local reviewScore, aggregateScore = "", ""
if reviewerCount == 1 then
reviewScore = data.i18n.reviewScore
else
reviewScore = data.i18n.reviewScores
end
if aggregatorCount == 1 then
aggregateScore = data.i18n.aggregateScore
else
aggregateScore = data.i18n.aggregateScores
end
builder:css('font-size', '100%')
if #activeSystems ~= 0 then
builder:wikitext(data.i18n.multiplatformCategory)
local na = yesno(args.na)
local showplatforms = #activeSystems ~= 1 or yesno(args.showplatforms)
if hasReviewers then
if showplatforms then
renderHeadingRowWithSystems(builder, reviewScore, activeSystems)
else
renderHeadingRow(builder, reviewScore, data.i18n.publication)
end
for _,v in ipairs(providedReviewers) do
renderRatingsBySystem(builder, v, data.reviewers[v].name, activeSystems, args, na)
end
for _,v in ipairs(customReviewerKeys) do
renderRatingsBySystem(builder, v, args[v], activeSystems, args, na)
end
end
if hasAggregators then
if hasReviewers then
renderMainHeading(builder, #activeSystems+1, aggregateScore)
elseif showplatforms then
renderHeadingRowWithSystems(builder, aggregateScore, activeSystems)
else
renderHeadingRow(builder, aggregateScore, data.i18n.aggregator)
end
for _,v in ipairs(providedAggregators) do
renderRatingsBySystem(builder, v, data.aggregators[v].name, activeSystems, args, na)
end
for _,v in ipairs(customAggregatorKeys) do
renderRatingsBySystem(builder, v, args[v], activeSystems, args, na)
end
end
else
builder:wikitext(data.i18n.singleplatformCategory)
builder:css('font-size', '100%')
if hasAggregators then
renderHeadingRow(builder, aggregateScore, data.i18n.aggregator)
for _,v in ipairs(providedAggregators) do
renderRating(builder, data.aggregators[v].name, args[v])
end
for _,v in ipairs(customAggregatorKeys) do
renderRating(builder, args[v], args[v .. 'Score'] or args[v .. 'Оцена'])
end
end
if hasReviewers then
renderHeadingRow(builder, reviewScore, data.i18n.publication)
for _,v in ipairs(providedReviewers) do
renderRating(builder, data.reviewers[v].name, args[v])
end
for _,v in ipairs(customReviewerKeys) do
renderRating(builder, args[v], args[v .. 'Score'] or args[v .. 'Оцена'])
end
end
end
end
local function renderAwards(builder, args, awardKeys, borderTop, awardCount)
builder = builder:tag('table')
:addClass('infobox wikitable')
:css('width', '100%')
:css('margin', '0em')
:css('border-top', borderTop)
:attr('cellpadding', 3)
:attr('cellspacing', 0)
if awardCount == 1 then
renderMainHeading(builder, 2, data.i18n.award, borderTop)
else
renderMainHeading(builder, 2, data.i18n.awards, borderTop)
end
builder:tag('tr')
:tag('th')
:wikitext(data.i18n.publication)
:done()
:tag('th')
:wikitext(data.i18n.award)
for _,v in ipairs(awardKeys) do
builder:tag('tr')
:tag('td')
:css('font-weight','bold')
:css('background-color','#f2f2f2')
:wikitext(args[v .. 'Pub'] or args[v .. 'Пуб'])
:done()
:tag('td')
:css('background-color','#f2f2f2')
:wikitext(args[v])
end
end
local function renderMainTable(providedReviewers, providedAggregators, awardKeys, activeSystems, customAggregatorKeys, customReviewerKeys, args, reviewerCount, aggregatorCount, awardCount)
local tbl = mw.html.create('table')
:attr('cellpadding', 0)
:attr('cellspacing', 0)
:css('background', 'transparent')
:css('padding', '0em')
:css('margin', '0em 1em 1em 1em')
:css('text-align', 'center')
:css('font-size', '80%')
:css('float', args.align or 'right')
:css('clear', args.align or 'right')
if #activeSystems == 0 then
-- Width: 20% Seems better since it scales with the article size.
tbl
:css('width', args.width or '23em')
end
if args.title and args.state and (args.state == 'autocollapse'
or args.state == 'collapsed' or args.state == 'expanded') then
tbl
:addClass('collapsible')
:addClass(args.state)
end
renderTitleRow(tbl, args.title)
if args.subtitle then
tbl:tag('tr'):tag('th')
:css('font-size', '120%')
:wikitext(args.subtitle)
end
renderReviews(tbl:tag('tr'):tag('td'), providedReviewers, providedAggregators, activeSystems, customAggregatorKeys, customReviewerKeys, args, reviewerCount, aggregatorCount)
if #awardKeys ~= 0 then
renderAwards(tbl:tag('tr'):tag('td'), args, awardKeys, (#customAggregatorKeys ~= 0 or #customReviewerKeys ~= 0 or #providedAggregators ~= 0 or #providedReviewers ~= 0) and 'none' or nil, awardCount)
end
return tbl
end
function p._reviewbox(args)
local activeSystems = getActiveSystems(args)
local customReviewerKeys, customAggregatorKeys, awardKeys, customReviewerCount, customAggregatorCount, awardCount = getArgKeyTables(args)
local providedReviewers, providedAggregators, providedReviewersCount, providedAggregatorsCount = getProvidedReviewersAndAggregators(args, #activeSystems ~= 0)
local reviewerCount = customReviewerCount + providedReviewersCount
local aggregatorCount = customAggregatorCount + providedAggregatorsCount
if #customAggregatorKeys ~= 0 or #customReviewerKeys ~= 0 or #providedAggregators ~= 0 or #providedReviewers ~= 0 or #awardKeys ~= 0 then
return renderMainTable(providedReviewers, providedAggregators, awardKeys, activeSystems, customAggregatorKeys, customReviewerKeys, args, reviewerCount, aggregatorCount, awardCount)
elseif mw.title.getCurrentTitle().namespace == 0 then
return data.i18n.emptyCategory
end
end
function p.reviewbox(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._reviewbox(getArgs(frame, {wrappers = data.i18n.wrapper, trim = false, translate = data.argi18n}))
end
return p