Documentatie voor deze module kan aangemaakt worden op de volgende pagina: Module:WSNavMenu/doc
local p = {} local curTitle = mw.title.getCurrentTitle() function p.innerMenu(frame) local theInput = frame:preprocess(frame.args['input']) local result = '' for MenuItem in mw.text.gsplit(theInput, "\n\n") do local MenuParts = mw.text.split(MenuItem, "\n") if #MenuParts == 1 then -- A simple link result = result .. p.makeNavLink(MenuParts[1], 'nav-link', 'color:#fff', 'nav-item', frame) else -- A dropdown menu local dropdownHeader = frame:callParserFunction( '#widget', { 'Link', type='a', href='#', class='nav-link dropdown-toggle', datatoggle='dropdown', style='color:#fff', text=MenuParts[1] .. '<b class="caret"></b>' } ) local dropdownContent = '' for i=2,#MenuParts do if MenuParts[i] == '-' then dropdownContent = dropdownContent .. '<li class="divider"></li>' else dropdownContent = dropdownContent .. p.makeNavLink( MenuParts[i], 'dropdown-item', '', '', frame ) end end result = result .. '<li class="nav-item dropdown">' .. dropdownHeader .. '<ul class="dropdown-menu" role="menu">' .. dropdownContent .. '</ul></li>' end end return result end function p.makeNavLink(inputString, class, style, liClass, frame) local MenuParts = mw.text.split(inputString, "*") local linkPart = MenuParts[1] local textPart = MenuParts[2] local linkType = MenuParts[3] if not textPart then textPart = linkPart end if not linkType or linkType == Page then if not mw.title.new( linkPart ) then do return "Unknown link: " .. mw.text.jsonEncode(inputString) end end linkPart = mw.title.new( linkPart ) if mw.title.compare( curTitle, linkPart) == 0 then liClass = liClass .. ' navbar-presentpage' end linkPart = linkPart:fullUrl({}, 'https') end local navLink = frame:callParserFunction( '#widget', { 'Link', type = 'a', href = linkPart, class= class, text = textPart, style= style } ) return '<li class="'..liClass..'">' .. navLink .. '</li>' end return p