Все испытания для Модуль: Navbox проводятся здесь. Для проверки конечной работы используется
local p = {} function p.box( f ) local args = require( 'Модуль:ProcessArgs' ).merge( true ) local navbox = {} local title = args.title or args["название"] or '' local class = args.class or args["класс"] or 'collapsible' local bodyStyle = args.bodystyle or args["стиль тела"] or '' if bodyStyle ~= '' then bodyStyle = 'style="' .. bodyStyle .. '"' end local titleStyle = args.titlestyle or args["стиль названия"] or '' if titleStyle ~= '' then titleStyle = 'style="' .. titleStyle .. '"' end local aboveStyle = args.abovestyle or args["стиль верха"] or '' if aboveStyle ~= '' then aboveStyle = 'style="' .. aboveStyle .. '"' end local groupStyle = args.groupstyle or args["стиль группы"] or '' if groupStyle ~= '' then groupStyle = 'style="' .. groupStyle .. '"' end local listStyle = args.liststyle or args["стиль списка"] or '' if listStyle ~= '' then listStyle = 'style="' .. listStyle .. '"' end local belowStyle = args.belowstyle or args["стиль подвала"] or '' if belowStyle ~= '' then belowStyle = 'style="' .. belowStyle .. '"' end local navbar = args[1] or '' if navbar ~= '' then local mini = '' if navbar:match( 'navbar%-mini' ) then mini = '1' end navbar = '<div class="navbox-navbar">' .. f:preprocess( '{{navbar|' .. args.name .. '|mini=' .. mini .. '|style=' .. barStyle .. '|fontstyle=' .. barFont .. '}}' ) .. '</div>' end local barStyle = args.barstyle or args["стиль бара"] or '' local barFont = args.barfont or args["текст бара"] or '' local name = args.name or args["шаблон"] or '' local below = args.below or args["подвал"] or '' local above = args.above or args["верх"] or '' local title = args.title or args["название"] or '' if title ~= '' then table.insert( navbox, ' {| class="navbox hlist ' .. class .. '" ' .. bodyStyle ) table.insert( navbox, '! class="navbox-top" colspan="2" ' .. titleStyle .. ' | ' .. navbar .. '<span class="navbox-title">' .. title .. '</span>' ) else table.insert( navbox, ' {| class="navbox-child"' ) end if above then table.insert( navbox, '|-\n| class="navbox-above" colspan="2" ' .. aboveStyle .. '| ' .. above:gsub( '^([*#:{])', '\n%1' ) ) end local listNums = {} for k, v in pairs( args ) do if type( k ) == 'string' then local listNum = k:match( 'list(%d+)' ) or k:match( 'лист(%d+)' ) if listNum and v then table.insert( listNums, tonumber( listNum ) ) end end end table.sort( listNums ) for _, v in ipairs( listNums ) do local list = args['list' .. v] or args['лист' .. v] local groupl = args['group' .. v] or args['группа' .. v] if list and groupl then table.insert( navbox, '|-\n! class="navbox-group" ' .. groupStyle .. ' | ' .. groupl ) table.insert( navbox, '| class="navbox-list" ' .. listStyle .. '| ' .. list:gsub( '^([*#:{])', '\n%1' ) ) else table.insert( navbox, '|-\n| class="navbox-list" colspan="2" ' .. listStyle .. '| ' .. list:gsub( '^([*#:{])', '\n%1' ) ) end end if below ~= '' then table.insert( navbox, '|-\n| class="navbox-below" colspan="2" ' .. belowStyle .. '| ' .. below:gsub( '^([*#:{])', '\n%1' ) ) end table.insert( navbox, '|}' ) navbox = table.concat( navbox, '\n' ):gsub( ' style=""', '' ) return navbox end return p