Module:Tabber
Jump to navigation
Jump to search
This is a module documentation subpage for Module:Tabber.
It contains usage information, categories, interlanguage links and other content that is not part of the original module page.
It contains usage information, categories, interlanguage links and other content that is not part of the original module page.
Implements {{Tabber}} and {{SubTabs}}.
local p = {} local getArgs = require( 'Module:Arguments' ).getArgs -- Implements Template:SubTabs. function p.sub(frame) local args = getArgs(frame, { wrappers = { 'Template:SubTabs' } }) local main = args[1] or mw.title.getCurrentTitle().baseText -- Use {{BASEPAGENAME}} if no page is given. local disp = string.match(main, "^(.+)%s+%(") or args['disp'] -- does not display discriminators in parenthesis local subpage = function( page ) return main .. '/' .. page end local sub = function( number ) if args['sub' .. number] then return subpage( args['sub' .. number] ) end end local tabs = { ['this'] = args['this'], ['link1'] = main, ['name1'] = disp, ['link2'] = sub( '1' ), ['name2'] = args['sub1'], ['link3'] = sub( '2' ), ['name3'] = args['sub2'], ['link4'] = sub( '3' ), ['name4'] = args['sub3'], ['link5'] = sub( '4' ), ['name5'] = args['sub4'], ['link6'] = sub( '5' ), ['name6'] = args['sub5'], ['link7'] = sub( '6' ), ['name7'] = args['sub6'], ['link8'] = sub( '7' ), ['name8'] = args['sub7'], ['link9'] = sub( '8' ), ['name9'] = args['sub8'], ['link10'] = sub( '9' ), ['name10'] = args['sub9'], ['link11'] = sub( '10' ), ['name11'] = args['sub10'], ['link12'] = sub( '11' ), ['name12'] = args['sub11'], ['link13'] = sub( '12' ), ['name13'] = args['sub12'], ['link14'] = sub( '13' ), ['name14'] = args['sub13'], ['link15'] = sub( '14' ), ['name15'] = args['sub14'], } return p._main( tabs ) end -- Implements Template:Tabber. function p.main(frame) local args = getArgs(frame, { wrappers = { 'Template:Tabber' } }) return p._main( args ) end function p._main( args ) local current_page = args['this'] or mw.title.getCurrentTitle().prefixedText local rows = {} for n=1,15 do if args['link' .. n] then -- Use the link as the name if none is given. local name = args['name' .. n] or args['link' .. n] if args['link' .. n] == current_page then -- The active tab. table.insert( rows, string.format( '<div class="page-tabber-tab active-tab">%s</div>', name ) ) else -- The inactive tabs. local link = string.format( '[[%s|%s]]', args['link' .. n], name ) table.insert( rows, string.format( '<div class="page-tabber-tab inactive-tab">%s</div>', link ) ) end end end -- The separator is used for the space between two tabs. local separator = '\n<div class="page-tabber-separator"> </div>\n' -- The tail fills the space between the last tab and the end of the line. local tail = '<div class="page-tabber-separator tail"> </div>' return string.format( '<div id="pageTabber" class="page-tabber">\n%s\n%s\n</div>', table.concat( rows, separator ), tail ) end return p