<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://wiki.svetpribehu.eu/index.php?action=history&amp;feed=atom&amp;title=Modul%3AInfobox</id>
		<title>Modul:Infobox - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.svetpribehu.eu/index.php?action=history&amp;feed=atom&amp;title=Modul%3AInfobox"/>
		<link rel="alternate" type="text/html" href="http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;action=history"/>
		<updated>2026-09-26T09:26:56Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;diff=263&amp;oldid=prev</id>
		<title>Lugiak: naimportována 1 revize</title>
		<link rel="alternate" type="text/html" href="http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;diff=263&amp;oldid=prev"/>
				<updated>2018-02-05T23:33:53Z</updated>
		
		<summary type="html">&lt;p&gt;naimportována 1 revize&lt;/p&gt;
&lt;a href=&quot;http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;amp;diff=263&amp;amp;oldid=205&quot;&gt;Ukázat změny&lt;/a&gt;</summary>
		<author><name>Lugiak</name></author>	</entry>

	<entry>
		<id>http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;diff=205&amp;oldid=prev</id>
		<title>Frietjes: infobox class not needed for subbox since the parent box will set the class (and causes problems on mobile)</title>
		<link rel="alternate" type="text/html" href="http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;diff=205&amp;oldid=prev"/>
				<updated>2018-01-24T22:39:59Z</updated>
		
		<summary type="html">&lt;p&gt;infobox class not needed for subbox since the parent box will set the class (and causes problems on mobile)&lt;/p&gt;
&lt;a href=&quot;http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;amp;diff=205&amp;amp;oldid=262&quot;&gt;Ukázat změny&lt;/a&gt;</summary>
		<author><name>Frietjes</name></author>	</entry>

	<entry>
		<id>http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;diff=262&amp;oldid=prev</id>
		<title>Dvorapa: rv anglických názvů parametrů, víc škody než užitku, chce to detailnější zásah do kódu</title>
		<link rel="alternate" type="text/html" href="http://wiki.svetpribehu.eu/index.php?title=Modul:Infobox&amp;diff=262&amp;oldid=prev"/>
				<updated>2017-08-14T08:50:23Z</updated>
		
		<summary type="html">&lt;p&gt;rv anglických názvů parametrů, víc škody než užitku, chce to detailnější zásah do kódu&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- This module implements {{Infobox}}&lt;br /&gt;
--&lt;br /&gt;
--&amp;lt;source lang=lua&amp;gt;&lt;br /&gt;
--[[&lt;br /&gt;
	keywords are used for languages: they are the names of the actual&lt;br /&gt;
	parameters of the template&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local keywords = {&lt;br /&gt;
	name				= 'název',&lt;br /&gt;
	child				= 'child',&lt;br /&gt;
	subbox				= 'subbox',&lt;br /&gt;
	decat				= 'decat',&lt;br /&gt;
	bodystyle			= 'styl těla',&lt;br /&gt;
	bodyclass			= 'třída těla',&lt;br /&gt;
	title				= 'titulek',&lt;br /&gt;
	titlestyle			= 'styl titulku',&lt;br /&gt;
	titleclass			= 'třída titulku',&lt;br /&gt;
	above				= 'záhlaví',&lt;br /&gt;
	abovestyle			= 'styl záhlaví',&lt;br /&gt;
	aboveclass			= 'třída záhlaví',&lt;br /&gt;
	subheader			= 'podzáhlaví',&lt;br /&gt;
	subheaderstyle		= 'styl podzáhlaví',&lt;br /&gt;
	subheaderclass		= 'třída podzáhlaví',&lt;br /&gt;
	subheaderrowstyle	= 'třída řádku podzáhlaví',&lt;br /&gt;
	image				= 'obrázek',&lt;br /&gt;
	imagestyle			= 'styl obrázku',&lt;br /&gt;
	imageclass			= 'třída obrázku',&lt;br /&gt;
	imagerowclass		= 'třída řádku obrázku',&lt;br /&gt;
	caption				= 'popisek',&lt;br /&gt;
	captionstyle		= 'styl popisku',&lt;br /&gt;
	headerstyle			= 'styl nadpisů',&lt;br /&gt;
	labelstyle			= 'styl popisů',&lt;br /&gt;
	datastyle			= 'styl dat',&lt;br /&gt;
	rowid				= 'id řádků',&lt;br /&gt;
	headerid			= 'id nadpisů',&lt;br /&gt;
	labelid				= 'id popisů',&lt;br /&gt;
	dataid				= 'id dat',&lt;br /&gt;
	header				= 'nadpis',&lt;br /&gt;
	label				= 'popis',&lt;br /&gt;
	data				= 'data',&lt;br /&gt;
	rowstyle			= 'styl řádku',&lt;br /&gt;
	rowcellstyle		= 'styl buňky řádku',&lt;br /&gt;
	rowclass			= 'třída řádku',&lt;br /&gt;
	class				= 'třída',&lt;br /&gt;
	below				= 'zápatí',&lt;br /&gt;
	belowstyle			= 'styl zápatí',&lt;br /&gt;
	belowclass			= 'třída zápatí',&lt;br /&gt;
} -- here is what you want to translate&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local navbar = require('Modul:Navbar')._navbar&lt;br /&gt;
&lt;br /&gt;
local args = {}&lt;br /&gt;
local origArgs&lt;br /&gt;
local root&lt;br /&gt;
&lt;br /&gt;
local function notempty( s ) return s and s:match( '%S' ) end&lt;br /&gt;
&lt;br /&gt;
local function fixChildBoxes(sval, tt)&lt;br /&gt;
	if notempty(sval) then&lt;br /&gt;
		local marker = '&amp;lt;span class=special_infobox_marker&amp;gt;'&lt;br /&gt;
		local s = sval&lt;br /&gt;
		s = mw.ustring.gsub(s, '(&amp;lt;%s*[Tt][Rr])', marker .. '%1')&lt;br /&gt;
		s = mw.ustring.gsub(s, '(&amp;lt;/[Tt][Rr]%s*&amp;gt;)', '%1' .. marker)&lt;br /&gt;
		if s:match(marker) then&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')&lt;br /&gt;
			s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')&lt;br /&gt;
			s = mw.ustring.gsub(s, '(&amp;lt;/[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*&amp;gt;%s*)' .. marker, '%1')&lt;br /&gt;
			s = mw.ustring.gsub(s, '(&amp;lt;%s*[Tt][Aa][Bb][Ll][Ee][^&amp;lt;&amp;gt;]*&amp;gt;%s*)' .. marker, '%1')&lt;br /&gt;
			s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')&lt;br /&gt;
			s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')&lt;br /&gt;
			s = mw.ustring.gsub(s,  marker .. '(%s*&amp;lt;/[Tt][Aa][Bb][Ll][Ee]%s*&amp;gt;)', '%1')&lt;br /&gt;
			s = mw.ustring.gsub(s,  marker .. '(%s*\n|%})', '%1')&lt;br /&gt;
		end&lt;br /&gt;
		if s:match(marker) then&lt;br /&gt;
			local subcells = mw.text.split(s, marker)&lt;br /&gt;
			s = ''&lt;br /&gt;
			for k = 1, #subcells do&lt;br /&gt;
				if k == 1 then&lt;br /&gt;
					s = s .. subcells[k] .. '&amp;lt;/' .. tt .. '&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
				elseif k == #subcells then&lt;br /&gt;
					local rowstyle = ' style=&amp;quot;display:none&amp;quot;'&lt;br /&gt;
					if notempty(subcells[k]) then rowstyle = ''	end&lt;br /&gt;
					s = s .. '&amp;lt;tr' .. rowstyle ..'&amp;gt;&amp;lt;' .. tt .. ' colspan=2&amp;gt;\n' .. subcells[k]&lt;br /&gt;
				elseif notempty(subcells[k]) then&lt;br /&gt;
					if (k % 2) == 0 then&lt;br /&gt;
						s = s .. subcells[k]&lt;br /&gt;
					else&lt;br /&gt;
						s = s .. '&amp;lt;tr&amp;gt;&amp;lt;' .. tt .. ' colspan=2&amp;gt;\n' .. subcells[k] .. '&amp;lt;/' .. tt .. '&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return s&lt;br /&gt;
	else&lt;br /&gt;
		return sval&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
	-- Returns the union of the values of two tables, as a sequence.&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for k, v in pairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(vals) do&lt;br /&gt;
		table.insert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgNums(prefix)&lt;br /&gt;
	-- Returns a table containing the numbers of the arguments that exist&lt;br /&gt;
	-- for the specified prefix. For example, if the prefix was 'data', and&lt;br /&gt;
	-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')&lt;br /&gt;
		if num then table.insert(nums, tonumber(num)) end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addRow(rowArgs)&lt;br /&gt;
	-- Adds a row to the infobox, with either a header cell&lt;br /&gt;
	-- or a label/data cell combination.&lt;br /&gt;
	if rowArgs.header then&lt;br /&gt;
		root&lt;br /&gt;
			:tag('tr')&lt;br /&gt;
			:addClass(rowArgs.rowclass)&lt;br /&gt;
			:cssText(rowArgs.rowstyle)&lt;br /&gt;
			:attr('id', rowArgs.rowid)&lt;br /&gt;
			:tag('th')&lt;br /&gt;
			:attr('colspan', 2)&lt;br /&gt;
			:attr('id', rowArgs.headerid)&lt;br /&gt;
			:addClass(rowArgs.class)&lt;br /&gt;
			:addClass(args[keywords.headerclass])&lt;br /&gt;
			:css('text-align', 'center')&lt;br /&gt;
			:cssText(args[keywords.headerstyle])&lt;br /&gt;
			:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
			:wikitext(fixChildBoxes(rowArgs.header, 'th'))&lt;br /&gt;
	elseif rowArgs.data then&lt;br /&gt;
		local row = root:tag('tr')&lt;br /&gt;
		row:addClass(rowArgs.rowclass)&lt;br /&gt;
		row:cssText(rowArgs.rowstyle)&lt;br /&gt;
		row:attr('id', rowArgs.rowid)&lt;br /&gt;
		if rowArgs.label then&lt;br /&gt;
			row&lt;br /&gt;
				:tag('th')&lt;br /&gt;
				:attr('scope', 'row')&lt;br /&gt;
				:attr('id', rowArgs.labelid)&lt;br /&gt;
				:cssText(args[keywords.labelstyle])&lt;br /&gt;
				:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
				:css('text-align', 'left')&lt;br /&gt;
				:wikitext(rowArgs.label)&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local dataCell = row:tag('td')&lt;br /&gt;
		if not rowArgs.label then&lt;br /&gt;
			dataCell&lt;br /&gt;
				:attr('colspan', 2)&lt;br /&gt;
				:css('text-align', 'center')&lt;br /&gt;
		end&lt;br /&gt;
		dataCell&lt;br /&gt;
			:attr('id', rowArgs.dataid)&lt;br /&gt;
			:addClass(rowArgs.class)&lt;br /&gt;
			:cssText(rowArgs.datastyle)&lt;br /&gt;
			:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(fixChildBoxes(rowArgs.data, 'td'))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTitle()&lt;br /&gt;
	if not args[keywords.title] then return end&lt;br /&gt;
&lt;br /&gt;
	root&lt;br /&gt;
		:tag('caption')&lt;br /&gt;
		:addClass(args[keywords.titleclass])&lt;br /&gt;
		:cssText(args[keywords.titlestyle])&lt;br /&gt;
		:wikitext(args[keywords.title])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow()&lt;br /&gt;
	if not args[keywords.above] then return end&lt;br /&gt;
&lt;br /&gt;
	root&lt;br /&gt;
		:tag('tr')&lt;br /&gt;
		:tag('th')&lt;br /&gt;
		:attr('colspan', 2)&lt;br /&gt;
		:addClass(args[keywords.aboveclass])&lt;br /&gt;
		:css('text-align', 'center')&lt;br /&gt;
		:css('font-size', '125%')&lt;br /&gt;
		:css('font-weight', 'bold')&lt;br /&gt;
		:cssText(args[keywords.abovestyle])&lt;br /&gt;
		:wikitext(fixChildBoxes(args[keywords.above],'th'))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow()&lt;br /&gt;
	if not args[keywords.below] then return end&lt;br /&gt;
&lt;br /&gt;
	root&lt;br /&gt;
		:tag('tr')&lt;br /&gt;
		:tag('td')&lt;br /&gt;
		:attr('colspan', '2')&lt;br /&gt;
		:addClass(args[keywords.belowclass])&lt;br /&gt;
		:css('text-align', 'center')&lt;br /&gt;
		:cssText(args[keywords.belowstyle])&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(fixChildBoxes(args[keywords.below],'td'))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubheaders()&lt;br /&gt;
	if args[keywords.subheader] then&lt;br /&gt;
		args[keywords.subheader .. 1] = args[keywords.subheader]&lt;br /&gt;
	end&lt;br /&gt;
	if args[keywords.subheaderrowclass] then&lt;br /&gt;
		args[keywords.subheaderrowclass .. 1] = args[keywords.subheaderrowclass]&lt;br /&gt;
	end&lt;br /&gt;
	local subheadernums = getArgNums(keywords.subheader)&lt;br /&gt;
	for k, num in ipairs(subheadernums) do&lt;br /&gt;
		addRow({&lt;br /&gt;
			data = args[keywords.subheader .. tostring(num)],&lt;br /&gt;
			datastyle = args[keywords.subheaderstyle] or args[keywords.subheaderstyle .. tostring(num)],&lt;br /&gt;
			class = args[keywords.subheaderclass],&lt;br /&gt;
			rowclass = args[keywords.subheaderrowclass .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderImages()&lt;br /&gt;
	if args[keywords.image] then&lt;br /&gt;
		args[keywords.image .. 1] = args[keywords.image]&lt;br /&gt;
	end&lt;br /&gt;
	if args[keywords.caption] then&lt;br /&gt;
		args[keywords.caption .. 1] = args[keywords.caption]&lt;br /&gt;
	end&lt;br /&gt;
	local imagenums = getArgNums(keywords.image)&lt;br /&gt;
	for k, num in ipairs(imagenums) do&lt;br /&gt;
		local caption = args[keywords.caption .. tostring(num)]&lt;br /&gt;
		local data = mw.html.create():wikitext(args[keywords.image .. tostring(num)])&lt;br /&gt;
		if caption then&lt;br /&gt;
			data&lt;br /&gt;
				:tag('div')&lt;br /&gt;
				:cssText(args[keywords.captionstyle])&lt;br /&gt;
				:wikitext(caption)&lt;br /&gt;
		end&lt;br /&gt;
		addRow({&lt;br /&gt;
			data = tostring(data),&lt;br /&gt;
			datastyle = args[keywords.imagestyle],&lt;br /&gt;
			class = args[keywords.imageclass],&lt;br /&gt;
			rowclass = args[keywords.imagerowclass .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRows()&lt;br /&gt;
	-- Gets the union of the header and data argument numbers,&lt;br /&gt;
	-- and renders them all in order using addRow.&lt;br /&gt;
	local rownums = union(getArgNums(keywords.header), getArgNums(keywords.data))&lt;br /&gt;
	table.sort(rownums)&lt;br /&gt;
	for k, num in ipairs(rownums) do&lt;br /&gt;
		addRow({&lt;br /&gt;
			header = args[keywords.header .. tostring(num)],&lt;br /&gt;
			label = args[keywords.label .. tostring(num)],&lt;br /&gt;
			data = args[keywords.data .. tostring(num)],&lt;br /&gt;
			datastyle = args[keywords.datastyle],&lt;br /&gt;
			class = args[keywords.class .. tostring(num)],&lt;br /&gt;
			rowclass = args[keywords.rowclass .. tostring(num)],&lt;br /&gt;
			rowstyle = args[keywords.rowstyle .. tostring(num)],&lt;br /&gt;
			rowcellstyle = args[keywords.rowcellstyle .. tostring(num)],&lt;br /&gt;
			dataid = args[keywords.dataid .. tostring(num)],&lt;br /&gt;
			labelid = args[keywords.labelid .. tostring(num)],&lt;br /&gt;
			headerid = args[keywords.headerid .. tostring(num)],&lt;br /&gt;
			rowid = args[keywords.rowid .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar()&lt;br /&gt;
	if not args[keywords.name] then return end&lt;br /&gt;
&lt;br /&gt;
	root&lt;br /&gt;
		:tag('tr')&lt;br /&gt;
		:tag('td')&lt;br /&gt;
		:attr('colspan', '2')&lt;br /&gt;
		:css('text-align', 'right')&lt;br /&gt;
		:wikitext(navbar{&lt;br /&gt;
			args[keywords.name],&lt;br /&gt;
			noedit = 1&lt;br /&gt;
		})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderItalicTitle()&lt;br /&gt;
	local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])&lt;br /&gt;
	if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then&lt;br /&gt;
		root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTrackingCategories()&lt;br /&gt;
	if args[keywords.decat] ~= 'yes' then&lt;br /&gt;
		if #(getArgNums(keywords.data)) == 0 and mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
			root:wikitext('[[Category:Articles which use infobox templates with no data rows]]')&lt;br /&gt;
		end&lt;br /&gt;
		if args[keywords.child] == 'yes' and args[keywords.title] then&lt;br /&gt;
			root:wikitext('[[Category:Pages which use embedded infobox templates with the title parameter]]')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _infobox()&lt;br /&gt;
	-- Specify the overall layout of the infobox, with special settings&lt;br /&gt;
	-- if the infobox is used as a 'child' inside another infobox.&lt;br /&gt;
	if args[keywords.child] ~= 'yes' then&lt;br /&gt;
		root = mw.html.create('table')&lt;br /&gt;
&lt;br /&gt;
		root&lt;br /&gt;
			:addClass('infobox')&lt;br /&gt;
			:addClass(args[keywords.bodyclass])&lt;br /&gt;
&lt;br /&gt;
		if args[keywords.subbox] == 'yes' then&lt;br /&gt;
			root&lt;br /&gt;
				:css('padding', '0')&lt;br /&gt;
				:css('border', 'none')&lt;br /&gt;
				:css('margin', '-3px')&lt;br /&gt;
				:css('width', 'auto')&lt;br /&gt;
				:css('min-width', '100%')&lt;br /&gt;
				:css('font-size', '100%')&lt;br /&gt;
				:css('clear', 'none')&lt;br /&gt;
				:css('float', 'none')&lt;br /&gt;
				:css('background-color', 'transparent')&lt;br /&gt;
		end&lt;br /&gt;
		root&lt;br /&gt;
			:cssText(args[keywords.bodystyle])&lt;br /&gt;
&lt;br /&gt;
		renderTitle()&lt;br /&gt;
		renderAboveRow()&lt;br /&gt;
	else&lt;br /&gt;
		root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
		root&lt;br /&gt;
			:wikitext(args[keywords.title])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderSubheaders()&lt;br /&gt;
	renderImages()&lt;br /&gt;
	renderRows()&lt;br /&gt;
	renderBelowRow()&lt;br /&gt;
	renderNavBar()&lt;br /&gt;
	renderItalicTitle()&lt;br /&gt;
	renderTrackingCategories()&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function preprocessSingleArg(argName)&lt;br /&gt;
	-- If the argument exists and isn't blank, add it to the argument table.&lt;br /&gt;
	-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.&lt;br /&gt;
	if origArgs[argName] and origArgs[argName] ~= '' then&lt;br /&gt;
		args[argName] = origArgs[argName]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function preprocessArgs(prefixTable, step)&lt;br /&gt;
	-- Assign the parameters with the given prefixes to the args table, in order, in batches&lt;br /&gt;
	-- of the step size specified. This is to prevent references etc. from appearing in the&lt;br /&gt;
	-- wrong order. The prefixTable should be an array containing tables, each of which has&lt;br /&gt;
	-- two possible fields, a &amp;quot;prefix&amp;quot; string and a &amp;quot;depend&amp;quot; table. The function always parses&lt;br /&gt;
	-- parameters containing the &amp;quot;prefix&amp;quot; string, but only parses parameters in the &amp;quot;depend&amp;quot;&lt;br /&gt;
	-- table if the prefix parameter is present and non-blank.&lt;br /&gt;
	if type(prefixTable) ~= 'table' then&lt;br /&gt;
		error(&amp;quot;Non-table value detected for the prefix table&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if type(step) ~= 'number' then&lt;br /&gt;
		error(&amp;quot;Invalid step value detected&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get arguments without a number suffix, and check for bad input.&lt;br /&gt;
	for i,v in ipairs(prefixTable) do&lt;br /&gt;
		if type(v) ~= 'table' or type(v.prefix) ~= &amp;quot;string&amp;quot; or (v.depend and type(v.depend) ~= 'table') then&lt;br /&gt;
			error('Invalid input detected to preprocessArgs prefix table', 2)&lt;br /&gt;
		end&lt;br /&gt;
		preprocessSingleArg(v.prefix)&lt;br /&gt;
		-- Only parse the depend parameter if the prefix parameter is present and not blank.&lt;br /&gt;
		if args[v.prefix] and v.depend then&lt;br /&gt;
			for j, dependValue in ipairs(v.depend) do&lt;br /&gt;
				if type(dependValue) ~= 'string' then&lt;br /&gt;
					error('Invalid &amp;quot;depend&amp;quot; parameter value detected in preprocessArgs')&lt;br /&gt;
				end&lt;br /&gt;
				preprocessSingleArg(dependValue)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get arguments with number suffixes.&lt;br /&gt;
	local a = 1 -- Counter variable.&lt;br /&gt;
	local moreArgumentsExist = true&lt;br /&gt;
	while moreArgumentsExist == true do&lt;br /&gt;
		moreArgumentsExist = false&lt;br /&gt;
		for i = a, a + step - 1 do&lt;br /&gt;
			for j,v in ipairs(prefixTable) do&lt;br /&gt;
				local prefixArgName = v.prefix .. tostring(i)&lt;br /&gt;
				if origArgs[prefixArgName] then&lt;br /&gt;
					moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones.&lt;br /&gt;
					preprocessSingleArg(prefixArgName)&lt;br /&gt;
				end&lt;br /&gt;
				-- Process the depend table if the prefix argument is present and not blank, or&lt;br /&gt;
				-- we are processing &amp;quot;prefix1&amp;quot; and &amp;quot;prefix&amp;quot; is present and not blank, and&lt;br /&gt;
				-- if the depend table is present.&lt;br /&gt;
				if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then&lt;br /&gt;
					for j,dependValue in ipairs(v.depend) do&lt;br /&gt;
						local dependArgName = dependValue .. tostring(i)&lt;br /&gt;
						preprocessSingleArg(dependArgName)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		a = a + step&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.infobox(frame)&lt;br /&gt;
	-- If called via #invoke, use the args passed into the invoking template.&lt;br /&gt;
	-- Otherwise, for testing purposes, assume args are being passed directly in.&lt;br /&gt;
	if frame == mw.getCurrentFrame() then&lt;br /&gt;
		origArgs = frame:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		origArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Parse the data parameters in the same order that the old {{infobox}} did, so that&lt;br /&gt;
	-- references etc. will display in the expected places. Parameters that depend on&lt;br /&gt;
	-- another parameter are only processed if that parameter is present, to avoid&lt;br /&gt;
	-- phantom references appearing in article reference lists.&lt;br /&gt;
	preprocessSingleArg(keywords.child)&lt;br /&gt;
	preprocessSingleArg(keywords.bodyclass)&lt;br /&gt;
	preprocessSingleArg(keywords.subbox)&lt;br /&gt;
	preprocessSingleArg(keywords.bodystyle)&lt;br /&gt;
	preprocessSingleArg(keywords.title)&lt;br /&gt;
	preprocessSingleArg(keywords.titleclass)&lt;br /&gt;
	preprocessSingleArg(keywords.titlestyle)&lt;br /&gt;
	preprocessSingleArg(keywords.above)&lt;br /&gt;
	preprocessSingleArg(keywords.aboveclass)&lt;br /&gt;
	preprocessSingleArg(keywords.abovestyle)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = keywords.subheader, depend = {keywords.subheaderstyle, keywords.subheaderrowclass}}&lt;br /&gt;
	}, 10)&lt;br /&gt;
	preprocessSingleArg(keywords.subheaderstyle)&lt;br /&gt;
	preprocessSingleArg(keywords.subheaderclass)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = keywords.image, depend = {keywords.caption, keywords.imagerowclass}}&lt;br /&gt;
	}, 10)&lt;br /&gt;
	preprocessSingleArg(keywords.captionstyle)&lt;br /&gt;
	preprocessSingleArg(keywords.imagestyle)&lt;br /&gt;
	preprocessSingleArg(keywords.imageclass)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = keywords.header},&lt;br /&gt;
		{prefix = keywords.data, depend = {keywords.label}},&lt;br /&gt;
		{prefix = keywords.rowclass},&lt;br /&gt;
		{prefix = keywords.rowstyle},&lt;br /&gt;
		{prefix = keywords.rowcellstyle},&lt;br /&gt;
		{prefix = keywords.class},&lt;br /&gt;
		{prefix = keywords.dataid},&lt;br /&gt;
		{prefix = keywords.labelid},&lt;br /&gt;
		{prefix = keywords.headerid},&lt;br /&gt;
		{prefix = keywords.rowid}&lt;br /&gt;
	}, 50)&lt;br /&gt;
	preprocessSingleArg(keywords.headerclass)&lt;br /&gt;
	preprocessSingleArg(keywords.headerstyle)&lt;br /&gt;
	preprocessSingleArg(keywords.labelstyle)&lt;br /&gt;
	preprocessSingleArg(keywords.datastyle)&lt;br /&gt;
	preprocessSingleArg(keywords.below)&lt;br /&gt;
	preprocessSingleArg(keywords.belowclass)&lt;br /&gt;
	preprocessSingleArg(keywords.belowstyle)&lt;br /&gt;
	preprocessSingleArg(keywords.name)&lt;br /&gt;
	args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent&lt;br /&gt;
	preprocessSingleArg(keywords.decat)&lt;br /&gt;
&lt;br /&gt;
	return _infobox()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Dvorapa</name></author>	</entry>

	</feed>