VOOZH about

URL: https://minecraft.wiki/w/Module:Achievement

⇱ Module:Achievement – Minecraft Wiki


Module:Achievement

From Minecraft Wiki
Jump to navigation Jump to search
Documentation[view] [edit] [history] [purge]Jump to code ↴

Called by {{AchievementRow}} and {{Load achievements}}

[view] [edit] [history] [purge]The above documentation is transcluded from Module:Achievement/doc.
localachievement_page='Achievement'
localp={}
localnamespace=mw.title.getCurrentTitle().nsText
localpage_title=mw.title.getCurrentTitle().text
localfull_title=mw.title.getCurrentTitle().fullText
localhtml
localframe
localfunctionsanitize(str)
-- remove anything between < and > (simple way to remove span tag)
-- return lower case alpha numeric characters and spaces
returnmw.text.trim(str:gsub('<.->',''):gsub('[^%w%s%?]*',''):lower())
end
localfunctiontrim(str)
localtrimmed=(strandmw.text.trim(str)~=""andmw.text.trim(str))
returntrimmed
end
-- Adds one row of achievement data to html object
localfunctionprintLine(line,is_input)
localtr=html:tag('tr'):attr('id',line.title):cssText('text-align:left')
locallink=nil
ifnotis_inputthen
link=achievement_page..'#'..line.title
end
localachievementIcon=require('Module:SpriteFile').sprite({name='AchievementSprite',sanitize(line.title),size=94,align='middle',scale=0.5,link=link})
localnewAchievementIcon=require('Module:SpriteFile').sprite({name='NewAchievementSprite',sanitize(line.title),height=48,width=84,align='middle',link=link})
tr:tag('td'):wikitext(achievementIcon):cssText('text-align:center')
tr:tag('td'):wikitext(newAchievementIcon):cssText('text-align:center')
localtitle_extra=''
ifline.upcoming_verthen
title_extra=title_extra..frame:expandTemplate{title='Upcoming',args={ver=line.upcoming_ver}}
end
ifline.until_verthen
title_extra=title_extra..frame:expandTemplate{title='Until',args={ver=line.until_ver}}
end
tr:tag('td'):wikitext('[['..(linkorfull_title)..'|'..line.title..']]',title_extra)
tr:tag('td'):wikitext(line.game_description)
tr:tag('td'):wikitext(line.wiki_description)
tr:tag('td'):wikitext(line.gamerscore)
tr:tag('td'):wikitext(line.trophy_type)
ifis_inputthen-- These are only displayed on the input page, not on individual content pages
tr:tag('td'):wikitext(line.reward)
end
end
-- Puts one line of data into Bucket for later querying
localfunctionstoreLine(line)
-- Put data into Bucket
-- The only top level params that are needed is stuff that would be used as selectors
-- everything else is put into a json blob for flexibility
ifnot(namespace==''ornamespace=='Minecraft_Wiki')then
return-- only store data if we are in main or Minecraft_Wiki namespaces
end
localsanitized_title=sanitize(line.title)
-- mw.text.unstrip gets rid of parser artifacts that are put there when a <ref> tag is used.
line.wiki_description=mw.text.unstrip(line.wiki_description)
line.game_description=mw.text.unstrip(line.game_description)
bucket('achievement').put({
title=sanitized_title,
json=mw.text.jsonEncode(line)-- serializes all data into a json blob
})
end
-- Public function - Called by {{AchievementRow}}
functionp.inputLine(_frame)
frame=_frame-- store frame for later use by expandTemplate
localargs=frame:getParent().args
-- Normalize inputs and set defaults
localline={
title=args['title'],-- name
upcoming_ver=args['upcoming'],-- version where achievement will be introduced
until_ver=args['until'],-- version where achievement will be removed
game_description=trim(args[1])or"—",
wiki_description=trim(args[2])or"—",
gamerscore=trim(args[3])or'—',
trophy_type=trim(args[4])or'—',
reward=trim(args[5])or'—',
}
html=mw.html.create()
printLine(line,true)
storeLine(line)
returnhtml
end
localfunctionprintHeader(short_header)
-- Can't use table tag because it will close itself, but we need to close it with footer
html=mw.html.create():wikitext('<div style="overflow: auto;"><table class="wikitable collapsible sortable" style="text-align:center">')
localth=html:tag('tr'):tag('th'):addClass('unsortable'):attr('colspan',8)
localtr=html:tag('tr')
tr:tag('th'):wikitext('Icon'):attr('colspan',2):addClass('unsortable')
tr:tag('th'):wikitext('Achievement'):attr('rowspan',2):addClass('sortable')
tr:tag('th'):wikitext('In-game description'):attr('rowspan',2):addClass('unsortable')
tr:tag('th'):wikitext('Actual requirements (if different)'):attr('rowspan',2):addClass('unsortable')
tr:tag('th'):wikitext('Gamerscore earned'):attr('rowspan',2):addClass('sortable')
tr:tag('th'):wikitext('Trophy type (<span class="explain" title="PlayStation">PS</span>)'):attr('rowspan',2):addClass('sortable')
ifnotshort_headerthen
tr:tag('th'):wikitext('Rewards'):attr('rowspan',2)
end
html:tag('th'):wikitext('PS4'):addClass('unsortable')
html:tag('th'):wikitext('Other'):addClass('unsortable')
returnhtml
end
localfunctionprintFooter()
return'</table></div>'
end
-- Public function - called by {{AchievementTable}}
functionp.table(frame)
localargs=frame:getParent().args
ifargs[1]=='foot'then
returnprintFooter()
else
returnprintHeader(false)
end
end
-- Public function - called by {{Load achievements}}
functionp.load(frame_)
frame=frame_-- store frame for later use by expandTemplate
localargs=frame:getParent().args
achievement_page=args.pageorachievement_page
printHeader(true)
localconditions={}
fornameinstring.gmatch(args[1],"[^;]+")do
conditions[#conditions+1]={'title',sanitize(name)}
end
localquery=bucket('achievement')
.select('title','json')
.where('page_name',achievement_page)
.where(bucket.Or(unpack(conditions)))
.run()
ifquerythen
fori,vinipairs(query)do
localline=mw.text.jsonDecode(v['json']or'{}')
printLine(line,false)
end
end
if#conditions~=#querythen
html:wikitext('[[Category:Missing achievement]]')
end
html:wikitext(printFooter())
returnhtml
end
returnp
Retrieved from "https://minecraft.wiki/w/Module:Achievement?oldid=3149620"

Navigation menu