Module:Military navigation
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Military navigation/doc
local p = { } local Navbox = require('Module:Navbox') local Styles = require('Module:WPMILHIST Infobox style') local function isblank(s) return (not s) or s == '' end local function ifnotblank(s,p,t) return (s and s ~= '') and (p..s) or t end function p.main(frame) local args = { } local pargs = frame:getParent().args local fargs = frame.args local sargs = {} local tcats = '' -- process bodystyle and titlestyle local style = fargs['style'] or pargs['style'] or '' if style == 'wide' then args['titlestyle'] = Styles['nav_box_wide_header'] args['bodystyle'] = Styles['nav_box_wide'] else args['titlestyle'] = Styles['nav_box_header'] local border = fargs['border'] or pargs['border'] or '' if border == 'child' or border == 'subgroup' then args['bodystyle'] = Styles['nav_box_child'] tcats = tcats .. '[[Category:Pages using military navigation subgroups without wide style]]' else args['bodystyle'] = Styles['nav_box'] end end sargs['titlestyle'] = 1 sargs['bodystyle'] = 1 -- process groupstyle, abovestyle, belowstyle args['groupstyle'] = Styles['nav_box_label'] .. (fargs['groupstyle'] or pargs['groupstyle'] or '') sargs['groupstyle'] = 1 args['abovestyle'] = Styles['nav_box_label'] .. (fargs['abovestyle'] or pargs['abovestyle'] or '') sargs['abovestyle'] = 1 args['belowstyle'] = Styles['nav_box_label'] .. (fargs['belowstyle'] or pargs['belowstyle'] or '') sargs['belowstyle'] = 1 -- process oddstyle, evenstyle args['oddstyle'] = ifnotblank((fargs['odd_color'] or pargs['odd_color']),'background:',nil) args['evenstyle'] = ifnotblank((fargs['even_color'] or pargs['even_color']),'background:',nil) sargs['oddstyle'] = 1 sargs['evenstyle'] = 1 -- process name and rawname args['name'] = ifnotblank((fargs['name'] or pargs['name']),'',(fargs['rawname'] or pargs['rawname'])) if isblank(args['name']) then args['navbar'] = 'plain' end sargs['name'] = 1 sargs['rawname'] = 1 -- copy the remaining args, with frame args overriding parent args for k, v in pairs(pargs) do if v and v ~= '' and sargs[k] == nil then args[k] = v end end for k, v in pairs(fargs) do if v and v ~= '' and sargs[k] == nil then args[k] = v end end -- add allow wrap if args['title'] and style ~= 'wide' then if not mw.ustring.match(args['title'], '<span class="wrap">') then -- probably a more efficient way to match 15 or more characters local m = '[^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|]' m = m .. m .. m args['title'] = mw.ustring.gsub(args['title'], '%[%[(' .. m .. '[^%[%]<>|]*)%]%]', '[[%1|<span class="wrap">%1</span>]]') args['title'] = mw.ustring.gsub(args['title'], '%[%[([^%[%]<>|]*)|(' .. m .. '[^%[%]<>|]*)%]%]', '[[%1|<span class="wrap">%2</span>]]') end end -- add navbox-vertical for non-wide format if style ~= 'wide' then args['bodyclass'] = 'navbox-vertical' .. (args['bodyclass'] and (' ' .. args['bodyclass']) or '') end return tcats .. Navbox._navbox(args) end return p