User:The Gaffer/sandbox/modules/switch
local p = {} local yesno = require('Module:Yesno')
function p.main(frame) return frame:preprocess(tostring(p._main(frame:getParent().args))) end
function p._main(args) local contents = {}
local i = 1 while args['item'..i] do table.insert(contents, { text = args['text'..i] or ('Item '..i), content = '\n' .. args['item'..i], id = args['switch_id'..i] or i}) i = i + 1 end
local ret = mw.html.create('div') :addClass('switch-infobox') :addClass('loading') :tag('span') :addClass('loading-button') :addClass('button') :wikitext('Loading...') :done() if args.float then if args.float == 'left' then ret:addClass('tleft') :addClass('thumb') elseif args.float == 'right' then ret:addClass('tright') :addClass('thumb') end end
local mah_triggers = ret:tag('div') :addClass('switch-infobox-triggers')
local isSelect = yesno(args.select) if isSelect then mah_triggers:addClass('infobox-triggers-select') elseif i > 6 and isSelect ~= false then mah_triggers:addClass('infobox-triggers-select') end
for i, v in ipairs(contents) do mah_triggers :tag('span') :addClass('trigger') :addClass('button') :addClass(i==1 and 'button-selected' or ) :attr('data-id',v.id) :wikitext(v.text) :done()
ret :tag('div') :addClass('item') :addClass(i==1 and 'showing' or ) :attr('data-id',v.id) :wikitext(v.content) :done() end
return ret end
return p