Module:PastWikithons
From BASAbaliWiki
Documentation for this module may be created at Module:PastWikithons/doc
local p = {} local competitions = {} function addToSet(set, key) set[key] = true end function removeFromSet(set, key) set[key] = nil end function setContains(set, key) return set[key] ~= nil end function p.display( frame ) local div = mw.html.create( 'div' ) div:addClass('wikithon-list-legacy') -- https://github.com/SemanticMediaWiki/SemanticScribunto/blob/master/docs/README.md -- build list of unique wikithons names local result = mw.smw.ask { '[[Category:Article]]', '[[Competition::+]]', '?Competition', limit = 10, mainlabel = '-' } if result and #result then for num, entityData in pairs( result ) do local c = entityData['Competition'] if not setContains(competitions, c) then addToSet(competitions, c) end end end -- fetch wikithons artiles per wikithon for k, v in pairs( competitions ) do local competition = k local ulWikithon = div:tag('ul') ulWikithon:addClass('wikithon-list-legacy--item') ulWikithon:wikitext(competition) local result = mw.smw.ask { '[[Category:Article]]', '[[Competition::' .. competition ..']]', limit = 10, mainlabel = 'origin' } if result and #result then for num, entityData in pairs( result ) do local liPage = ulWikithon:tag('li') liPage:addClass('wikithon-list-legacy--page') liPage:wikitext(entityData.origin) end end end return div end return p