Module:Achievement
Jump to navigation
Jump to search
This module is used to automatically generate achievements sourced from the Template:Achievements.json data file.
Invocation
This module should be invocated using {{Achievement}}
and {{AchievementsTableRow}}
.
Updating the data file
Navigate to https://steamdb.info/app/526870/stats/ and execute the following script in the browser's console:
JSON.stringify(Object.fromEntries([...document.querySelectorAll('#js-achievements tbody > tr')].map(e => ({
internal: e.querySelector('td').textContent,
title: e.querySelector('td:nth-child(2)').firstChild.data.trim(),
description: e.querySelector('td:nth-child(2) > p').textContent.trim(),
})).map(({internal, ...remaining}) => [internal, remaining])));
local p = {}
local achievementsJSON = mw.loadJsonData('Template:Achievements.json')
function p.renderAchievement(frame)
local key = frame.args[1] or frame:getParent().args[1]
local title = achievementsJSON[key].title
local description = achievementsJSON[key].description
if (description ~= 'Hidden.') then
return string.format([=[<div class="descriptionbox achievement">[[File:%s unlocked.jpg|64px|link=Achievements]]'''[[Achievements#%s|%s]]''' • ''"%s"''</div>]=], key, title, title, description)
else
return string.format([=[<div class="descriptionbox achievement mw-collapsible mw-collapsed">Hidden achievement<div class="mw-collapsible-content">[[File:%s unlocked.jpg|64px|link=Achievements]]'''[[Achievements#%s|%s]]''' • ''"%s"''</div></div>]=], key, title, title, description)
end
end
function p.renderAchievementsTableRow(frame)
local key = frame.args[1] or frame:getParent().args[1]
local note = frame.args[2] or frame:getParent().args[2] or ""
local title = achievementsJSON[key].title
local description = achievementsJSON[key].description
return string.format("|-\n" .. [=[|style="white-space:pre;"|<span id="%s">[[File:%s unlocked.jpg|64px]] %s</span>||%s||%s]=], title, key, title, description, note)
end
return p