![]() |
VOOZH | about |
This module implements {{Users table}}.
localp={} localfd_base='https://minecraft.fandom.com%s/wiki/' localpl_base='https://minewiki.pl/' localanyGroupName=false locali18n={ dataDesc='List of users', unnamedGroup="''Unnamed group''", userLink='[[%sUser:%s|%s]]%s', userLinkF='[%sUser:%s %s]%s', talkLink='[[%sSpecial:TalkPage/User:%s|'..mw.message.new('sp-contributions-talk'):plain()..']]', talkLinkF='[%sUser_talk:%s '..mw.message.new('sp-contributions-talk'):plain()..']', contribsLink='[[%sSpecial:Contributions/%s|'..mw.message.new('contribslink'):plain()..']]', contribsLinkF='[%sSpecial:Contributions/%s '..mw.message.new('contribslink'):plain()..']', logsLink='[[%sSpecial:Log/%s|'..mw.message.new('sp-contributions-logs'):plain()..']]', logsLinkF='[%sSpecial:Log/%s '..mw.message.new('sp-contributions-logs'):plain()..']', } localfunctionescape(str) returnstr:gsub('\"','"') end localfunctionstripSpaceAndLineAtBothEnds(str) returnstring.gsub(str,'^[%s\n]*(.-)[%s\n]*$','%1') end localfunctionstringToArray(str,splitter) localrawSplit=mw.text.split(str,splitter) localresults={} for_,valueinipairs(rawSplit)do localstripped=stripSpaceAndLineAtBothEnds(value) ifstripped~=''then table.insert(results,stripped) end end returnresults end localfunctionparseData(data) localresultTable=mw.html.create('table'):addClass('alternaterows plainlinks users-table'):attr('data-description',escape(data.titleori18n.dataDesc)) ifdata.titlethen resultTable:tag('caption'):wikitext(data.title):done() end locallastGroupHasName=false for_,groupinipairs(data.groupsor{})do ifgroup.nameoranyGroupNamethen lastGroupHasName=true resultTable:tag('tr') :tag('th'):addClass('mcwiki-header users-table-group'):attr('colspan',2):wikitext(group.nameori18n.unnamedGroup):done() :done() end for_,userinipairs(group.usersor{})do localfields=mw.text.split(mw.text.trim(user)or'',':') localfield_user=mw.text.trim(fields[1]or'') localfield_iw=mw.text.trim(fields[2]or'') localfield_isfd=mw.text.trim(fields[3]or'') localfield_userdesc=mw.text.trim(fields[4]or'') localfield_user_pre=field_user iffield_isfd==''then field_isfd=nil iffield_iw~=''then field_iw=':'..field_iw..':' end else field_user=field_user:gsub(' ','_') iffield_iw=='en'then field_iw='' else field_iw='/'..field_iw end end iffield_isfdandfield_iw=='en'then field_iw='' end iffield_userdesc~=''then field_userdesc=mw.message.new('word-separator'):plain()..field_userdesc end localfield_ispl=(string.lower(field_isfdor'')=='pl') resultTable:tag('tr') :tag('td'):wikitext(field_isfdandi18n.userLinkF:format(field_isplandpl_baseorfd_base:format(field_iw),field_user,field_user_pre,field_userdesc)ori18n.userLink:format(field_iw,field_user,field_user,field_userdesc)):done() :tag('td') :tag('div'):addClass('hlist users-table-infolinks') :tag('ul') :tag('li'):wikitext(field_isfdandi18n.talkLinkF:format(field_isplandpl_baseorfd_base:format(field_iw),field_user)ori18n.talkLink:format(field_iw,field_user)):done() :tag('li'):wikitext(field_isfdandi18n.contribsLinkF:format(field_isplandpl_baseorfd_base:format(field_iw),field_user)ori18n.contribsLink:format(field_iw,field_user)):done() :tag('li'):wikitext(field_isfdandi18n.logsLinkF:format(field_isplandpl_baseorfd_base:format(field_iw),field_user)ori18n.logsLink:format(field_iw,field_user)):done() :done() :done() :done() :done() end end returntostring(mw.html.create('div'):addClass('users-table-container'):node(resultTable)) end functionp.table(f) localargs=f localframe=mw.getCurrentFrame() iff==framethen args=require('Module:ProcessArgs').merge(true) end localdata={ title=args.title, groups={}, } localarr={} localarrIndexLength=0 fork,vinpairs(args)do iftype(k)=='number'then arr[k]=v arrIndexLength=math.max(arrIndexLength,k) end end fori=1,arrIndexLength,2do table.insert(data.groups,{ name=arr[i], users=stringToArray(arr[i+1]or'',','), }) end returnrequire('Module:TSLoader').call('Template:Users table/styles.css')..parseData(data) end returnp