<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://ru.ru-skazki.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ANavbox%2F%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0</id>
	<title>Модуль:Navbox/песочница - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://ru.ru-skazki.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ANavbox%2F%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0"/>
	<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;action=history"/>
	<updated>2026-04-07T23:21:13Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4573&amp;oldid=prev</id>
		<title>Импортёр: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4573&amp;oldid=prev"/>
		<updated>2024-05-01T10:06:35Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 13:06, 1 мая 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Импортёр</name></author>
	</entry>
	<entry>
		<id>http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4572&amp;oldid=prev</id>
		<title>ru&gt;Andras: Новая страница: «-- -- Реализует {{Навигационная таблица}}, {{Подгруппы навигационной таблицы}} и {{Навигационная таблица с блоками}}. -- Основной объём кода заимствован из английского Module:Navbox. --  local p = {}  local getArgs -- lazily initialized local yesno -- lazily initialized local styleratio  local ODD_EVEN_MARKER = &#039;\127_ODDEVEN_\127&#039; l...»</title>
		<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4572&amp;oldid=prev"/>
		<updated>2023-06-04T11:25:58Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «-- -- Реализует {{Навигационная таблица}}, {{Подгруппы навигационной таблицы}} и {{Навигационная таблица с блоками}}. -- Основной объём кода заимствован из английского Module:Navbox. --  local p = {}  local getArgs -- lazily initialized local yesno -- lazily initialized local styleratio  local ODD_EVEN_MARKER = &amp;#039;\127_ODDEVEN_\127&amp;#039; l...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- Реализует {{Навигационная таблица}}, {{Подгруппы навигационной таблицы}} и {{Навигационная таблица с блоками}}.&lt;br /&gt;
-- Основной объём кода заимствован из английского Module:Navbox.&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs -- lazily initialized&lt;br /&gt;
local yesno -- lazily initialized&lt;br /&gt;
local styleratio&lt;br /&gt;
&lt;br /&gt;
local ODD_EVEN_MARKER = &amp;#039;\127_ODDEVEN_\127&amp;#039;&lt;br /&gt;
local RESTART_MARKER = &amp;#039;\127_ODDEVEN0_\127&amp;#039;&lt;br /&gt;
local REGEX_MARKER = &amp;#039;\127_ODDEVEN(%d?)_\127&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- общие параметры для всех шаблонов&lt;br /&gt;
local commonAliases = {&lt;br /&gt;
	name = {&amp;#039;name&amp;#039;, &amp;#039;имя&amp;#039;},&lt;br /&gt;
	navigation = {&amp;#039;navigation&amp;#039;, &amp;#039;навигация&amp;#039;},&lt;br /&gt;
	navbar = {&amp;#039;navbar&amp;#039;, &amp;#039;ссылка_на_просмотр&amp;#039;},&lt;br /&gt;
	state = {&amp;#039;state&amp;#039;},&lt;br /&gt;
	orphan = {&amp;#039;orphan&amp;#039;},&lt;br /&gt;
	tracking = {&amp;#039;tracking&amp;#039;},&lt;br /&gt;
	border = {&amp;#039;border&amp;#039;, 1},&lt;br /&gt;
	title = {&amp;#039;title&amp;#039;, &amp;#039;заголовок&amp;#039;},&lt;br /&gt;
	titlegroup = {&amp;#039;titlegroup&amp;#039;},&lt;br /&gt;
	above = {&amp;#039;above&amp;#039;, &amp;#039;вверху&amp;#039;},&lt;br /&gt;
	image = {&amp;#039;image&amp;#039;, &amp;#039;изображение&amp;#039;},&lt;br /&gt;
	imageleft = {&amp;#039;imageleft&amp;#039;, &amp;#039;изображение2&amp;#039;, &amp;#039;изображение_слева&amp;#039;},&lt;br /&gt;
	below = {&amp;#039;below&amp;#039;, &amp;#039;внизу&amp;#039;},&lt;br /&gt;
		&lt;br /&gt;
	bodyclass = {&amp;#039;bodyclass&amp;#039;, &amp;#039;класс_тела&amp;#039;},&lt;br /&gt;
	titleclass = {&amp;#039;titleclass&amp;#039;, &amp;#039;класс_заголовка&amp;#039;},&lt;br /&gt;
	titlegroupclass = {&amp;#039;titlegroupclass&amp;#039;},&lt;br /&gt;
	aboveclass = {&amp;#039;aboveclass&amp;#039;, &amp;#039;класс_вверху&amp;#039;},&lt;br /&gt;
	belowclass = {&amp;#039;belowclass&amp;#039;, &amp;#039;класс_внизу&amp;#039;},&lt;br /&gt;
	groupclass = {&amp;#039;groupclass&amp;#039;, &amp;#039;класс_групп&amp;#039;},&lt;br /&gt;
	listclass = {&amp;#039;listclass&amp;#039;, &amp;#039;класс_списков&amp;#039;},&lt;br /&gt;
	imageclass = {&amp;#039;imageclass&amp;#039;, &amp;#039;класс_изображения&amp;#039;},&lt;br /&gt;
	&lt;br /&gt;
	basestyle = {&amp;#039;basestyle&amp;#039;, &amp;#039;стиль&amp;#039;, &amp;#039;стиль_базовый&amp;#039;},&lt;br /&gt;
	bodystyle = {&amp;#039;style&amp;#039;, &amp;#039;bodystyle&amp;#039;, &amp;#039;стиль_тела&amp;#039;},&lt;br /&gt;
	titlestyle = {&amp;#039;titlestyle&amp;#039;, &amp;#039;стиль_основного_заголовка&amp;#039;, &amp;#039;стиль_заголовка&amp;#039;},&lt;br /&gt;
	titlegroupstyle = {&amp;#039;titlegroupstyle&amp;#039;},&lt;br /&gt;
	innerstyle = {&amp;#039;innerstyle&amp;#039;},&lt;br /&gt;
	abovestyle = {&amp;#039;abovestyle&amp;#039;, &amp;#039;стиль_вверху&amp;#039;},&lt;br /&gt;
	belowstyle = {&amp;#039;belowstyle&amp;#039;, &amp;#039;стиль_внизу&amp;#039;},&lt;br /&gt;
	imagestyle = {&amp;#039;imagestyle&amp;#039;, &amp;#039;стиль_изображения&amp;#039;},&lt;br /&gt;
	imageleftstyle = {&amp;#039;imageleftstyle&amp;#039;, &amp;#039;imagestyle2&amp;#039;, &amp;#039;стиль_изображения_слева&amp;#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- параметры {{Навигационная таблица}} и {{Подгруппы навигационной таблицы}}&lt;br /&gt;
local standardAliases = {&lt;br /&gt;
	groupstyle = {&amp;#039;groupstyle&amp;#039;, &amp;#039;стиль_заголовков&amp;#039;, &amp;#039;стиль_групп&amp;#039;},&lt;br /&gt;
	liststyle = {&amp;#039;liststyle&amp;#039;, &amp;#039;стиль_списков&amp;#039;},&lt;br /&gt;
	evenodd = {&amp;#039;evenodd&amp;#039;, &amp;#039;чётные_нечётные&amp;#039;, &amp;#039;четные_нечетные&amp;#039;},&lt;br /&gt;
	groupwidth = {&amp;#039;groupwidth&amp;#039;, &amp;#039;ширина_групп&amp;#039;},&lt;br /&gt;
	listpadding = {&amp;#039;listpadding&amp;#039;, &amp;#039;отступ_списков&amp;#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- параметры {{Навигационная таблица}} и {{Подгруппы навигационной таблицы}} с нумерацией&lt;br /&gt;
local standardElementAliases = {&lt;br /&gt;
	group = {&amp;#039;group%s&amp;#039;, &amp;#039;заголовок%s&amp;#039;, &amp;#039;группа%s&amp;#039;},&lt;br /&gt;
	list = {&amp;#039;list%s&amp;#039;, &amp;#039;список%s&amp;#039;},&lt;br /&gt;
	groupstyle = {&amp;#039;group%sstyle&amp;#039;, &amp;#039;стиль_заголовка%s&amp;#039;, &amp;#039;стиль_группы%s&amp;#039;},&lt;br /&gt;
	listclass = {&amp;#039;list%sclass&amp;#039;, &amp;#039;класс%sсписка&amp;#039;, &amp;#039;класс_списка%s&amp;#039;},&lt;br /&gt;
	liststyle = {&amp;#039;list%sstyle&amp;#039;, &amp;#039;стиль_списка%s&amp;#039;},&lt;br /&gt;
	listpadding = {&amp;#039;list%spadding&amp;#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- параметры {{Навигационная таблица с блоками}}&lt;br /&gt;
-- с нижнего подчеркивания начинаются параметры, конфликтующие с standardAliases &lt;br /&gt;
local groupsParentAliases = {&lt;br /&gt;
	selected = {&amp;#039;selected&amp;#039;, &amp;#039;открытый_блок&amp;#039;, &amp;#039;развернуть&amp;#039;},&lt;br /&gt;
	secttitlestyle = {&amp;#039;secttitlestyle&amp;#039;, &amp;#039;стиль_заголовков&amp;#039;},&lt;br /&gt;
	_groupstyle = {&amp;#039;groupstyle&amp;#039;, &amp;#039;стиль_блоков&amp;#039;},&lt;br /&gt;
	_liststyle = {&amp;#039;liststyle&amp;#039;, &amp;#039;стиль_списков&amp;#039;, &amp;#039;contentstyle&amp;#039;},&lt;br /&gt;
	_listpadding = {&amp;#039;listpadding&amp;#039;, &amp;#039;отступ_списка&amp;#039;, &amp;#039;отступ_списков&amp;#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- параметры {{навигационная таблица с блоками}} с нумерацией&lt;br /&gt;
local groupsChildAliases = {&lt;br /&gt;
	groupname = {&amp;#039;abbr%s&amp;#039;, &amp;#039;имя_блока%s&amp;#039;, &amp;#039;аббр%s&amp;#039;},&lt;br /&gt;
	state = {&amp;#039;state%s&amp;#039;},&lt;br /&gt;
	title = {&amp;#039;group%s&amp;#039;, &amp;#039;блок%s&amp;#039;, &amp;#039;заголовок%s&amp;#039;, &amp;#039;группа%s&amp;#039;, &amp;#039;sect%s&amp;#039;, &amp;#039;section%s&amp;#039;, &amp;#039;секция%s&amp;#039;},&lt;br /&gt;
	list1 = {&amp;#039;list%s&amp;#039;, &amp;#039;список%s&amp;#039;, &amp;#039;content%s&amp;#039;},&lt;br /&gt;
	image = {&amp;#039;image%s&amp;#039;, &amp;#039;изображение%s&amp;#039;},&lt;br /&gt;
	imageleft = {&amp;#039;imageleft%s&amp;#039;, &amp;#039;изображение_слева%s&amp;#039;},&lt;br /&gt;
&lt;br /&gt;
	secttitlestyle = {&amp;#039;sect%stitlestyle&amp;#039;, &amp;#039;стиль%sзаголовка&amp;#039;, &amp;#039;стиль_секции%s&amp;#039;},&lt;br /&gt;
	groupstyle = {&amp;#039;group%sstyle&amp;#039;, &amp;#039;стиль%sблока&amp;#039;, &amp;#039;стиль_группы%s&amp;#039;, &amp;#039;стиль_блока%s&amp;#039;},&lt;br /&gt;
	listclass = {&amp;#039;list%sclass&amp;#039;, &amp;#039;класс%sсписка&amp;#039;, &amp;#039;класс_списка%s&amp;#039;},&lt;br /&gt;
	liststyle = {&amp;#039;list%sstyle&amp;#039;, &amp;#039;стиль%sсписка&amp;#039;, &amp;#039;стиль_списка%s&amp;#039;, &amp;#039;content%sstyle&amp;#039;},&lt;br /&gt;
	color = {&amp;#039;цвет%s&amp;#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function checkAliases(args, aliases, index)&lt;br /&gt;
	for _, alias in ipairs(aliases) do&lt;br /&gt;
		local arg&lt;br /&gt;
		if index then&lt;br /&gt;
			arg = args[string.format(alias, index)]&lt;br /&gt;
		else&lt;br /&gt;
			arg = args[alias]&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if arg then&lt;br /&gt;
			return arg&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkElAliases(args, name, index)&lt;br /&gt;
	return checkAliases(args, standardElementAliases[name], index)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function concatStyles(t)&lt;br /&gt;
	local res&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if v then&lt;br /&gt;
			res = res and res .. &amp;#039;;&amp;#039; .. v or v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function striped(wikitext, args)&lt;br /&gt;
	-- Return wikitext with markers replaced for odd/even striping.&lt;br /&gt;
	-- Child (subgroup) navboxes are flagged with a category that is removed&lt;br /&gt;
	-- by parent navboxes. The result is that the category shows all pages&lt;br /&gt;
	-- where a child navbox is not contained in a parent navbox.&lt;br /&gt;
	local orphanCat = &amp;#039;[[Категория:Навигационные шаблоны без родителя]]&amp;#039;&lt;br /&gt;
	if args.border == &amp;#039;subgroup&amp;#039; and args.orphan ~= &amp;#039;yes&amp;#039; then&lt;br /&gt;
		-- No change; striping occurs in outermost navbox.&lt;br /&gt;
		return wikitext .. orphanCat&lt;br /&gt;
	end&lt;br /&gt;
	local first, second = &amp;#039;odd&amp;#039;, &amp;#039;even&amp;#039;&lt;br /&gt;
	if args.evenodd then&lt;br /&gt;
		if args.evenodd == &amp;#039;swap&amp;#039; then&lt;br /&gt;
			first, second = second, first&lt;br /&gt;
		else&lt;br /&gt;
			first = args.evenodd&lt;br /&gt;
			second = first&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local changer&lt;br /&gt;
	if first == second then&lt;br /&gt;
		changer = first&lt;br /&gt;
	else&lt;br /&gt;
		local index = 0&lt;br /&gt;
		changer = function (code)&lt;br /&gt;
			if code == &amp;#039;0&amp;#039; then&lt;br /&gt;
				-- Current occurrence is for a group before a nested table.&lt;br /&gt;
				-- Set it to first as a valid although pointless class.&lt;br /&gt;
				-- The next occurrence will be the first row after a title&lt;br /&gt;
				-- in a subgroup and will also be first.&lt;br /&gt;
				index = 0&lt;br /&gt;
				return first&lt;br /&gt;
			end&lt;br /&gt;
			index = index + 1&lt;br /&gt;
			return index % 2 == 1 and first or second&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local regex = orphanCat:gsub(&amp;#039;([%[%]])&amp;#039;, &amp;#039;%%%1&amp;#039;)&lt;br /&gt;
	return (wikitext:gsub(regex, &amp;#039;&amp;#039;):gsub(REGEX_MARKER, changer))  -- () omits gsub count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addNewline(s)&lt;br /&gt;
	if s:match(&amp;#039;^[*:;#]&amp;#039;) or s:match(&amp;#039;^{|&amp;#039;) then&lt;br /&gt;
		return &amp;#039;\n&amp;#039; .. s ..&amp;#039;\n&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar(titleCell, args)&lt;br /&gt;
	local currentFrame = mw.getCurrentFrame()&lt;br /&gt;
	if args.navbar ~= &amp;#039;off&amp;#039; and args.navbar ~= &amp;#039;plain&amp;#039; &lt;br /&gt;
		and (args.name or not currentFrame:getParent():getTitle():gsub(&amp;#039;/песочница$&amp;#039;, &amp;#039;&amp;#039;) == &amp;#039;Шаблон:Навигационная таблица&amp;#039;) then&lt;br /&gt;
		&lt;br /&gt;
		-- Check color contrast of the gear icon&lt;br /&gt;
		if not styleratio then&lt;br /&gt;
			styleratio = require(&amp;#039;Module:Color contrast&amp;#039;)._styleratio&lt;br /&gt;
		end&lt;br /&gt;
		local contrastStyle = args.titlestyle or args.basestyle&lt;br /&gt;
		local gearStyleBlack = (contrastStyle and mw.text.unstripNoWiki(contrastStyle) .. &amp;#039;; color:#666;&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
		local gearStyleWhite = (contrastStyle and mw.text.unstripNoWiki(contrastStyle) .. &amp;#039;; color:#fff;&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
		local gear = currentFrame:expandTemplate{&lt;br /&gt;
			title = &amp;#039;Tnavbar-view&amp;#039;,&lt;br /&gt;
			args = {&lt;br /&gt;
				args.name,&lt;br /&gt;
				fontcolor = (styleratio{gearStyleBlack} &amp;lt; styleratio{gearStyleWhite}) and &amp;#039;white&amp;#039;,&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		--- Gear creation&lt;br /&gt;
		titleCell&lt;br /&gt;
			:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;navbox-gear&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;float&amp;#039;, &amp;#039;left&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;text-align&amp;#039;, &amp;#039;left&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;width&amp;#039;, &amp;#039;5em&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;margin-right&amp;#039;, &amp;#039;0.5em&amp;#039;)&lt;br /&gt;
				:wikitext(gear)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Title row&lt;br /&gt;
--&lt;br /&gt;
local function renderTitleRow(tbl, args)&lt;br /&gt;
	if not args.title then return end&lt;br /&gt;
&lt;br /&gt;
	local titleRow = tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if args.titlegroup then&lt;br /&gt;
		titleRow&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;navbox-group&amp;#039;)&lt;br /&gt;
				:addClass(args.titlegroupclass)&lt;br /&gt;
				:cssText(args.basestyle)&lt;br /&gt;
				:cssText(args.groupstyle)&lt;br /&gt;
				:cssText(args.titlegroupstyle)&lt;br /&gt;
				:wikitext(args.titlegroup)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleCell = titleRow:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;scope&amp;#039;, &amp;#039;colgroup&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if args.titlegroup then&lt;br /&gt;
		titleCell&lt;br /&gt;
			:css(&amp;#039;border-left&amp;#039;, &amp;#039;2px solid #fdfdfd&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleColspan = 2&lt;br /&gt;
	if args.imageleft then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if args.image then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if args.titlegroup then titleColspan = titleColspan - 1 end&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:cssText(args.basestyle)&lt;br /&gt;
		:css(&amp;#039;font-size&amp;#039;, &amp;#039;114%&amp;#039;)&lt;br /&gt;
		:cssText(args.titlestyle)&lt;br /&gt;
		:addClass(&amp;#039;navbox-title&amp;#039;)&lt;br /&gt;
		:attr(&amp;#039;colspan&amp;#039;, titleColspan)&lt;br /&gt;
&lt;br /&gt;
	renderNavBar(titleCell, args)&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;id&amp;#039;, mw.uri.anchorEncode(args.title))&lt;br /&gt;
			:addClass(args.titleclass)&lt;br /&gt;
			:css(&amp;#039;margin&amp;#039;, &amp;#039;0 5em&amp;#039;)&lt;br /&gt;
			:wikitext(addNewline(args.title))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Above/Below rows&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local function getAboveBelowColspan(args)&lt;br /&gt;
	local ret = 2&lt;br /&gt;
	if args.imageleft then ret = ret + 1 end&lt;br /&gt;
	if args.image then ret = ret + 1 end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow(tbl, args)&lt;br /&gt;
	if not args.above then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;navbox-abovebelow&amp;#039;)&lt;br /&gt;
			:addClass(args.aboveclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:cssText(args.abovestyle)&lt;br /&gt;
			:attr(&amp;#039;colspan&amp;#039;, getAboveBelowColspan(args))&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				:wikitext(addNewline(args.above))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow(tbl, args)&lt;br /&gt;
	if not args.below then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;navbox-abovebelow&amp;#039;)&lt;br /&gt;
			:addClass(args.belowclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:cssText(args.belowstyle)&lt;br /&gt;
			:attr(&amp;#039;colspan&amp;#039;, getAboveBelowColspan(args))&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				:wikitext(addNewline(args.below))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   List rows&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local function haveSubgroups(args)&lt;br /&gt;
	for i = 1, 23 do&lt;br /&gt;
		if checkElAliases(args, &amp;#039;group&amp;#039;, i) and checkElAliases(args, &amp;#039;list&amp;#039;, i) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderListRow(tbl, args, index, rowspan, rowArgs)&lt;br /&gt;
	local row = tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and args.imageleft then&lt;br /&gt;
		row&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;navbox-image&amp;#039;)&lt;br /&gt;
				:addClass(args.imageclass)&lt;br /&gt;
				:css(&amp;#039;width&amp;#039;, &amp;#039;1px&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;padding&amp;#039;, &amp;#039;0px 7px 0px 0px&amp;#039;)&lt;br /&gt;
				:cssText(args.imageleftstyle)&lt;br /&gt;
				:attr(&amp;#039;rowspan&amp;#039;, rowspan)&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:wikitext(addNewline(args.imageleft))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if rowArgs.group then&lt;br /&gt;
		local groupCell = row:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;navbox-group&amp;#039;)&lt;br /&gt;
			:addClass(args.groupclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, args.groupwidth or &amp;#039;1px&amp;#039;) -- If groupwidth not specified, minimize width&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:cssText(args.groupstyle)&lt;br /&gt;
			:cssText(rowArgs.groupstyle)&lt;br /&gt;
			:wikitext(rowArgs.group)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listCell = row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if rowArgs.group then&lt;br /&gt;
		listCell&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;, &amp;#039;left&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;border-left-width&amp;#039;, &amp;#039;2px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;border-left-style&amp;#039;, &amp;#039;solid&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		if haveSubgroups(args) then&lt;br /&gt;
			listCell&lt;br /&gt;
				:attr(&amp;#039;colspan&amp;#039;, 2)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not args.groupwidth then&lt;br /&gt;
		listCell:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listText = rowArgs.list&lt;br /&gt;
	local oddEven = ODD_EVEN_MARKER&lt;br /&gt;
	if listText:sub(1, 12) == &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;table&amp;#039; then&lt;br /&gt;
		-- Assume list text is for a subgroup navbox so no automatic striping for this row.&lt;br /&gt;
		oddEven = listText:find(&amp;#039;&amp;lt;th[^&amp;gt;]*&amp;quot;navbox%-title&amp;quot;&amp;#039;) and RESTART_MARKER or &amp;#039;odd&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	listCell&lt;br /&gt;
		:css(&amp;#039;padding&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
		:cssText(args.liststyle)&lt;br /&gt;
		:cssText(rowArgs.liststyle)&lt;br /&gt;
		:addClass(&amp;#039;navbox-list&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;navbox-&amp;#039; .. oddEven)&lt;br /&gt;
		:addClass(args.listclass)&lt;br /&gt;
		:addClass(rowArgs.listclass)&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;, rowArgs.listpadding or args.listpadding or &amp;#039;0em 0.25em&amp;#039;)&lt;br /&gt;
			:wikitext(addNewline(listText))&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and args.image then&lt;br /&gt;
		row&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;navbox-image&amp;#039;)&lt;br /&gt;
				:addClass(args.imageclass)&lt;br /&gt;
				:css(&amp;#039;width&amp;#039;, &amp;#039;1px&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;padding&amp;#039;, &amp;#039;0px 0px 0px 7px&amp;#039;)&lt;br /&gt;
				:cssText(args.imagestyle)&lt;br /&gt;
				:attr(&amp;#039;rowspan&amp;#039;, rowspan)&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:wikitext(addNewline(args.image))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Tracking categories&lt;br /&gt;
--&lt;br /&gt;
local function needsChangetoSubgroups(args)&lt;br /&gt;
	for i = 1, 23 do&lt;br /&gt;
		if (checkElAliases(args, &amp;#039;group&amp;#039;, i)) and not (checkElAliases(args, &amp;#039;list&amp;#039;, i)) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function needsHorizontalLists(args)&lt;br /&gt;
	if args.border == &amp;#039;subgroup&amp;#039; or args.tracking == &amp;#039;no&amp;#039; then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local listClasses = {&lt;br /&gt;
		[&amp;#039;plainlist&amp;#039;] = true, [&amp;#039;hlist&amp;#039;] = true, [&amp;#039;hlist hnum&amp;#039;] = true,&lt;br /&gt;
		[&amp;#039;hlist hwrap&amp;#039;] = true, [&amp;#039;hlist vcard&amp;#039;] = true, [&amp;#039;vcard hlist&amp;#039;] = true,&lt;br /&gt;
		[&amp;#039;hlist vevent&amp;#039;] = true, [&amp;#039;hlist hlist-items-nowrap&amp;#039;] = true, [&amp;#039;hlist-items-nowrap&amp;#039;] = true,&lt;br /&gt;
	}&lt;br /&gt;
	return not (listClasses[args.listclass] or listClasses[args.bodyclass])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- local function hasBackgroundColors()&lt;br /&gt;
--	return mw.ustring.match(titlestyle or &amp;#039;&amp;#039;,&amp;#039;background&amp;#039;) or mw.ustring.match(groupstyle or &amp;#039;&amp;#039;,&amp;#039;background&amp;#039;) or mw.ustring.match(basestyle or &amp;#039;&amp;#039;,&amp;#039;background&amp;#039;)&lt;br /&gt;
-- end&lt;br /&gt;
&lt;br /&gt;
local function isIllegible(args)&lt;br /&gt;
	if not styleratio then&lt;br /&gt;
		styleratio = require(&amp;#039;Module:Color contrast&amp;#039;)._styleratio&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for key, style in pairs(args) do&lt;br /&gt;
		if tostring(key):match(&amp;quot;style$&amp;quot;) or tostring(key):match(&amp;quot;^стиль&amp;quot;) then&lt;br /&gt;
			if styleratio{mw.text.unstripNoWiki(style)} &amp;lt; 4.5 then&lt;br /&gt;
				return true &lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTrackingCategories(args)&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	if needsChangetoSubgroups(args) then table.insert(cats, &amp;#039;Навигационные шаблоны с ошибочным использованием заголовков&amp;#039;) end&lt;br /&gt;
	if needsHorizontalLists(args) then table.insert(cats, &amp;#039;Навигационные шаблоны без горизонтальных списков&amp;#039;) end&lt;br /&gt;
	if isIllegible(args) then table.insert(cats, &amp;#039;Потенциально нечитаемые навигационные шаблоны&amp;#039;) end&lt;br /&gt;
	return cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTrackingCategories(builder, args)&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if title.namespace ~= 10 then return end -- not in template space&lt;br /&gt;
	local subpage = title.subpageText&lt;br /&gt;
	if subpage == &amp;#039;doc&amp;#039; or subpage == &amp;#039;песочница&amp;#039; or subpage == &amp;#039;тесты&amp;#039; then return end&lt;br /&gt;
&lt;br /&gt;
	for i, cat in ipairs(getTrackingCategories(args)) do&lt;br /&gt;
		builder:wikitext(&amp;#039;[[Категория:&amp;#039; .. cat .. &amp;#039;]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Main navbox tables&lt;br /&gt;
--&lt;br /&gt;
local function renderMainTable(args, listnums)&lt;br /&gt;
	local tbl = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;nowraplinks&amp;#039;)&lt;br /&gt;
		:addClass(args.bodyclass)&lt;br /&gt;
&lt;br /&gt;
	if args.title and (args.state ~= &amp;#039;plain&amp;#039; and args.state ~= &amp;#039;off&amp;#039;) then&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(&amp;#039;collapsible&amp;#039;)&lt;br /&gt;
			:addClass(args.state or &amp;#039;autocollapse&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	tbl:css(&amp;#039;border-spacing&amp;#039;, 0)&lt;br /&gt;
	if args.border == &amp;#039;subgroup&amp;#039; or args.border == &amp;#039;none&amp;#039; then&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(&amp;#039;navbox-subgroup&amp;#039;)&lt;br /&gt;
			:cssText(args.bodystyle)&lt;br /&gt;
	else -- regular navbox - bodystyle and style will be applied to the wrapper table&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(&amp;#039;navbox-inner&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;background&amp;#039;, &amp;#039;transparent&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;color&amp;#039;, &amp;#039;inherit&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	tbl:cssText(args.innerstyle)&lt;br /&gt;
&lt;br /&gt;
	renderTitleRow(tbl, args)&lt;br /&gt;
	renderAboveRow(tbl, args)&lt;br /&gt;
	for i, listnum in ipairs(listnums) do&lt;br /&gt;
		local rowArgs = {&lt;br /&gt;
			group = checkElAliases(args, &amp;#039;group&amp;#039;, listnum),&lt;br /&gt;
			list = checkElAliases(args, &amp;#039;list&amp;#039;, listnum),&lt;br /&gt;
			groupstyle = checkElAliases(args, &amp;#039;groupstyle&amp;#039;, listnum),&lt;br /&gt;
			listclass = checkElAliases(args, &amp;#039;listclass&amp;#039;, listnum),&lt;br /&gt;
			liststyle = checkElAliases(args, &amp;#039;liststyle&amp;#039;, listnum),&lt;br /&gt;
			listpadding = checkElAliases(args, &amp;#039;listpadding&amp;#039;, listnum)&lt;br /&gt;
		}&lt;br /&gt;
		renderListRow(tbl, args, i, #listnums, rowArgs)&lt;br /&gt;
	end&lt;br /&gt;
	renderBelowRow(tbl, args)&lt;br /&gt;
&lt;br /&gt;
	return tbl&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Read the arguments in the order they&amp;#039;ll be output in, to make references number in the right order.&lt;br /&gt;
local function readInTheRightOrder(args, groupAliases, listAliases)&lt;br /&gt;
	local _&lt;br /&gt;
	_ = checkAliases(args, commonAliases.title)&lt;br /&gt;
	_ = checkAliases(args, commonAliases.above)&lt;br /&gt;
	for i = 1, 23 do&lt;br /&gt;
		_ = checkAliases(args, groupAliases, i)&lt;br /&gt;
		_ = checkAliases(args, listAliases, i)&lt;br /&gt;
	end&lt;br /&gt;
	_ = checkAliases(args, commonAliases.below)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbox(args)&lt;br /&gt;
	if not yesno then&lt;br /&gt;
		yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listnums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local listnum = (&amp;#039;&amp;#039; .. k):match(&amp;#039;^list(%d+)$&amp;#039;) or (&amp;#039;&amp;#039; .. k):match(&amp;#039;^список(%d+)$&amp;#039;)&lt;br /&gt;
		if listnum then table.insert(listnums, tonumber(listnum)) end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort(listnums)&lt;br /&gt;
&lt;br /&gt;
	args.border = mw.text.trim(args.border or args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
	if args.border == &amp;#039;child&amp;#039; then&lt;br /&gt;
		args.border = &amp;#039;subgroup&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for argname, aliasesList in pairs(commonAliases) do&lt;br /&gt;
		args[argname] = checkAliases(args, aliasesList)	&lt;br /&gt;
	end&lt;br /&gt;
	for argname, aliasesList in pairs(standardAliases) do&lt;br /&gt;
		args[argname] = checkAliases(args, aliasesList)	&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.navigation = yesno(args.navigation, &amp;#039;&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- render the main body of the navbox&lt;br /&gt;
	local tbl = renderMainTable(args, listnums)&lt;br /&gt;
&lt;br /&gt;
	-- render the appropriate wrapper around the navbox, depending on the border param&lt;br /&gt;
	local res = mw.html.create()&lt;br /&gt;
	if args.border == &amp;#039;none&amp;#039; then&lt;br /&gt;
		local nav = res:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;role&amp;#039;, &amp;#039;navigation&amp;#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		if args.title then&lt;br /&gt;
			nav:attr(&amp;#039;aria-labelledby&amp;#039;, mw.uri.anchorEncode(args.title))&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr(&amp;#039;aria-label&amp;#039;, &amp;#039;Навигационный шаблон&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if args.name and args.name ~= &amp;#039;-&amp;#039; then&lt;br /&gt;
			nav:attr(&amp;#039;data-name&amp;#039;, args.name)&lt;br /&gt;
		end&lt;br /&gt;
		if args.navigation == true then&lt;br /&gt;
			nav:attr(&amp;#039;data-navboxnavigation&amp;#039;, &amp;#039;1&amp;#039;)&lt;br /&gt;
		elseif args.navigation == false then&lt;br /&gt;
			nav:attr(&amp;#039;data-navboxnavigation&amp;#039;, &amp;#039;0&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	elseif args.border == &amp;#039;subgroup&amp;#039; then&lt;br /&gt;
		-- We assume that this navbox is being rendered in a list cell of a parent navbox, and is&lt;br /&gt;
		-- therefore inside a div with padding:0em 0.25em. We start with a &amp;lt;/div&amp;gt; to avoid the&lt;br /&gt;
		-- padding being applied, and at the end add a &amp;lt;div&amp;gt; to balance out the parent&amp;#039;s &amp;lt;/div&amp;gt;&lt;br /&gt;
		res&lt;br /&gt;
			:wikitext(&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;) -- XXX: hack due to lack of unclosed support in mw.html.&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;) -- XXX: hack due to lack of unclosed support in mw.html.&lt;br /&gt;
	else&lt;br /&gt;
		local nav = res:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;role&amp;#039;, &amp;#039;navigation&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;navbox&amp;#039;)&lt;br /&gt;
			:cssText(args.bodystyle)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		if args.title then&lt;br /&gt;
			nav:attr(&amp;#039;aria-labelledby&amp;#039;, mw.uri.anchorEncode(args.title))&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr(&amp;#039;aria-label&amp;#039;, &amp;#039;Навигационный шаблон&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if args.name and args.name ~= &amp;#039;-&amp;#039; then&lt;br /&gt;
			nav:attr(&amp;#039;data-name&amp;#039;, args.name)&lt;br /&gt;
		end&lt;br /&gt;
		if args.navigation == true then&lt;br /&gt;
			nav:attr(&amp;#039;data-navboxnavigation&amp;#039;, &amp;#039;1&amp;#039;)&lt;br /&gt;
		elseif args.navigation == false then&lt;br /&gt;
			nav:attr(&amp;#039;data-navboxnavigation&amp;#039;, &amp;#039;0&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderTrackingCategories(res, args)&lt;br /&gt;
&lt;br /&gt;
	return striped(tostring(res), args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	end&lt;br /&gt;
	if not yesno then&lt;br /&gt;
		yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	args = getArgs(frame, {wrappers = {&amp;#039;Шаблон:Навигационная таблица&amp;#039;, &amp;#039;Шаблон:Подгруппы навигационной таблицы&amp;#039;}})&lt;br /&gt;
	if frame.args.border then&lt;br /&gt;
		-- This allows Template:Navbox_subgroup to use {{#invoke:Navbox|navbox|border=...}}.&lt;br /&gt;
		args.border = frame.args.border&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	readInTheRightOrder(args, standardElementAliases.group, standardElementAliases.list)&lt;br /&gt;
&lt;br /&gt;
	return p._navbox(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navboxWithCollapsibleGroups(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	end&lt;br /&gt;
	local args = getArgs(frame, {wrappers = {&amp;#039;Шаблон:Навигационная таблица с блоками&amp;#039;}})&lt;br /&gt;
	&lt;br /&gt;
	readInTheRightOrder(args, groupsChildAliases.title, groupsChildAliases.list1)&lt;br /&gt;
	&lt;br /&gt;
	local parent = {}&lt;br /&gt;
	for argname, aliasesList in pairs(commonAliases) do&lt;br /&gt;
		parent[argname] = checkAliases(args, aliasesList)	&lt;br /&gt;
	end&lt;br /&gt;
	for argname, aliasesList in pairs(groupsParentAliases) do&lt;br /&gt;
		parent[argname] = checkAliases(args, aliasesList)	&lt;br /&gt;
	end&lt;br /&gt;
				&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		local child = {}&lt;br /&gt;
		for argname, aliasesList in pairs(groupsChildAliases) do&lt;br /&gt;
			child[argname] = checkAliases(args, aliasesList, i)	&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		child.color = child.color and string.format(&amp;#039;background:%s;&amp;#039;, child.color) or &amp;#039;&amp;#039;&lt;br /&gt;
		child.border = &amp;#039;child&amp;#039;&lt;br /&gt;
		child.navbar = &amp;#039;plain&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
		if parent.selected and parent.selected == child.groupname then&lt;br /&gt;
			child.state = &amp;#039;uncollapsed&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		child.state = child.state or &amp;#039;collapsed&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
		child.basestyle = concatStyles{parent.basestyle, parent.secttitlestyle, child.secttitlestyle}&lt;br /&gt;
    	child.titlestyle = concatStyles{parent._groupstyle, child.groupstyle, child.color}&lt;br /&gt;
    	child.liststyle  = concatStyles{parent._liststyle, child.liststyle}&lt;br /&gt;
    	child.lispadding = parent._listpadding&lt;br /&gt;
		&lt;br /&gt;
		if child.title then&lt;br /&gt;
			parent[&amp;#039;list&amp;#039; .. i] = p._navbox(child)&lt;br /&gt;
		else&lt;br /&gt;
			parent[&amp;#039;list&amp;#039; .. i] = child.list1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p._navbox(parent)&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ru&gt;Andras</name></author>
	</entry>
</feed>