(Copied from DOTA2 Wiki) Â |
mNo edit summary  |
||
(12 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
local getArgs = require( 'Module:Arguments' ).getArgs |
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. |
-- Implements Template:Tabber. |
Latest revision as of 11:53, 1 July 2021
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