<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://baripedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox</id>
	<title>Module:Infobox - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://baripedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox"/>
	<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Infobox&amp;action=history"/>
	<updated>2026-04-29T18:20:44Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.38.6</generator>
	<entry>
		<id>https://baripedia.org/index.php?title=Module:Infobox&amp;diff=33581&amp;oldid=prev</id>
		<title>Simon : 1 révision importée</title>
		<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Infobox&amp;diff=33581&amp;oldid=prev"/>
		<updated>2018-02-07T15:16:00Z</updated>

		<summary type="html">&lt;p&gt;1 révision importée&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- This module implements {{Infobox}}&lt;br /&gt;
--&lt;br /&gt;
 &lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local navbar = require('Module: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.headerclass)&lt;br /&gt;
                    :css('text-align', 'center')&lt;br /&gt;
                    :cssText(args.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.labelstyle)&lt;br /&gt;
                    :cssText(rowArgs.rowcellstyle)&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.title then return end&lt;br /&gt;
&lt;br /&gt;
    root&lt;br /&gt;
        :tag('caption')&lt;br /&gt;
            :addClass(args.titleclass)&lt;br /&gt;
            :cssText(args.titlestyle)&lt;br /&gt;
            :wikitext(args.title)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow()&lt;br /&gt;
    if not args.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.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.abovestyle)&lt;br /&gt;
                :wikitext(fixChildBoxes(args.above,'th'))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow()&lt;br /&gt;
    if not args.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.belowclass)&lt;br /&gt;
                :css('text-align', 'center')&lt;br /&gt;
                :cssText(args.belowstyle)&lt;br /&gt;
                :newline()&lt;br /&gt;
                :wikitext(fixChildBoxes(args.below,'td'))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubheaders()&lt;br /&gt;
    if args.subheader then&lt;br /&gt;
        args.subheader1 = args.subheader&lt;br /&gt;
    end&lt;br /&gt;
    if args.subheaderrowclass then&lt;br /&gt;
        args.subheaderrowclass1 = args.subheaderrowclass&lt;br /&gt;
    end&lt;br /&gt;
    local subheadernums = getArgNums('subheader')&lt;br /&gt;
    for k, num in ipairs(subheadernums) do&lt;br /&gt;
        addRow({&lt;br /&gt;
            data = args['subheader' .. tostring(num)],&lt;br /&gt;
            datastyle = args.subheaderstyle or args['subheaderstyle' .. tostring(num)],&lt;br /&gt;
            class = args.subheaderclass,&lt;br /&gt;
            rowclass = args['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.image then&lt;br /&gt;
        args.image1 = args.image&lt;br /&gt;
    end&lt;br /&gt;
    if args.caption then&lt;br /&gt;
        args.caption1 = args.caption&lt;br /&gt;
    end&lt;br /&gt;
    local imagenums = getArgNums('image')&lt;br /&gt;
    for k, num in ipairs(imagenums) do&lt;br /&gt;
        local caption = args['caption' .. tostring(num)]&lt;br /&gt;
        local data = mw.html.create():wikitext(args['image' .. tostring(num)])&lt;br /&gt;
        if caption then&lt;br /&gt;
            data&lt;br /&gt;
                :tag('div')&lt;br /&gt;
                    :cssText(args.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.imagestyle,&lt;br /&gt;
            class = args.imageclass,&lt;br /&gt;
            rowclass = args['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('header'), getArgNums('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['header' .. tostring(num)],&lt;br /&gt;
            label = args['label' .. tostring(num)],&lt;br /&gt;
            data = args['data' .. tostring(num)],&lt;br /&gt;
            datastyle = args.datastyle,&lt;br /&gt;
            class = args['class' .. tostring(num)],&lt;br /&gt;
            rowclass = args['rowclass' .. tostring(num)],&lt;br /&gt;
            rowstyle = args['rowstyle' .. tostring(num)],&lt;br /&gt;
            rowcellstyle = args['rowcellstyle' .. tostring(num)],&lt;br /&gt;
            dataid = args['dataid' .. tostring(num)],&lt;br /&gt;
            labelid = args['labelid' .. tostring(num)],&lt;br /&gt;
            headerid = args['headerid' .. tostring(num)],&lt;br /&gt;
            rowid = args['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.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.name,&lt;br /&gt;
                    mini = 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.decat ~= 'yes' then&lt;br /&gt;
        if #(getArgNums('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.child == 'yes' and args.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.child ~= 'yes' then&lt;br /&gt;
        root = mw.html.create('table')&lt;br /&gt;
        &lt;br /&gt;
        root&lt;br /&gt;
            :addClass((args.subbox ~= 'yes') and 'infobox' or nil)&lt;br /&gt;
            :addClass(args.bodyclass)&lt;br /&gt;
            &lt;br /&gt;
            if args.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;
            else&lt;br /&gt;
                root&lt;br /&gt;
                    :css('width', '22em')&lt;br /&gt;
            end&lt;br /&gt;
        root&lt;br /&gt;
            :cssText(args.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.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('child')&lt;br /&gt;
    preprocessSingleArg('bodyclass')&lt;br /&gt;
    preprocessSingleArg('subbox')&lt;br /&gt;
    preprocessSingleArg('bodystyle')&lt;br /&gt;
    preprocessSingleArg('title')&lt;br /&gt;
    preprocessSingleArg('titleclass')&lt;br /&gt;
    preprocessSingleArg('titlestyle')&lt;br /&gt;
    preprocessSingleArg('above')&lt;br /&gt;
    preprocessSingleArg('aboveclass')&lt;br /&gt;
    preprocessSingleArg('abovestyle')&lt;br /&gt;
    preprocessArgs({&lt;br /&gt;
        {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}&lt;br /&gt;
    }, 10)&lt;br /&gt;
    preprocessSingleArg('subheaderstyle')&lt;br /&gt;
    preprocessSingleArg('subheaderclass')&lt;br /&gt;
    preprocessArgs({&lt;br /&gt;
        {prefix = 'image', depend = {'caption', 'imagerowclass'}}&lt;br /&gt;
    }, 10)&lt;br /&gt;
    preprocessSingleArg('captionstyle')&lt;br /&gt;
    preprocessSingleArg('imagestyle')&lt;br /&gt;
    preprocessSingleArg('imageclass')&lt;br /&gt;
    preprocessArgs({&lt;br /&gt;
        {prefix = 'header'},&lt;br /&gt;
        {prefix = 'data', depend = {'label'}},&lt;br /&gt;
        {prefix = 'rowclass'},&lt;br /&gt;
        {prefix = 'rowstyle'},&lt;br /&gt;
        {prefix = 'rowcellstyle'},&lt;br /&gt;
        {prefix = 'class'},&lt;br /&gt;
        {prefix = 'dataid'},&lt;br /&gt;
        {prefix = 'labelid'},&lt;br /&gt;
        {prefix = 'headerid'},&lt;br /&gt;
        {prefix = 'rowid'}&lt;br /&gt;
    }, 50)&lt;br /&gt;
    preprocessSingleArg('headerclass')&lt;br /&gt;
    preprocessSingleArg('headerstyle')&lt;br /&gt;
    preprocessSingleArg('labelstyle')&lt;br /&gt;
    preprocessSingleArg('datastyle')&lt;br /&gt;
    preprocessSingleArg('below')&lt;br /&gt;
    preprocessSingleArg('belowclass')&lt;br /&gt;
    preprocessSingleArg('belowstyle')&lt;br /&gt;
    preprocessSingleArg('name')&lt;br /&gt;
    args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent&lt;br /&gt;
    preprocessSingleArg('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>Simon</name></author>
	</entry>
	<entry>
		<id>https://baripedia.org/index.php?title=Module:Infobox&amp;diff=13675&amp;oldid=prev</id>
		<title>Arthur : 1 version</title>
		<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Infobox&amp;diff=13675&amp;oldid=prev"/>
		<updated>2014-07-18T21:58:25Z</updated>

		<summary type="html">&lt;p&gt;1 version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- This module implements {{Infobox}}&lt;br /&gt;
--&lt;br /&gt;
 &lt;br /&gt;
local p = {}&lt;br /&gt;
 &lt;br /&gt;
local HtmlBuilder = require('Module:HtmlBuilder')&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 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;
                .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.headerclass)&lt;br /&gt;
                    .css('text-align', 'center')&lt;br /&gt;
                    .cssText(args.headerstyle)&lt;br /&gt;
                    .wikitext(rowArgs.header)&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.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;
                    .css('text-align', 'left')&lt;br /&gt;
                    .cssText(args.labelstyle)&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;
            .newline()&lt;br /&gt;
            .wikitext(rowArgs.data)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTitle()&lt;br /&gt;
    if not args.title then return end&lt;br /&gt;
&lt;br /&gt;
    root&lt;br /&gt;
        .tag('caption')&lt;br /&gt;
            .addClass(args.titleclass)&lt;br /&gt;
            .cssText(args.titlestyle)&lt;br /&gt;
            .wikitext(args.title)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow()&lt;br /&gt;
    if not args.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.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.abovestyle)&lt;br /&gt;
                .wikitext(args.above)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow()&lt;br /&gt;
    if not args.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.belowclass)&lt;br /&gt;
                .css('text-align', 'center')&lt;br /&gt;
                .cssText(args.belowstyle)&lt;br /&gt;
                .newline()&lt;br /&gt;
                .wikitext(args.below)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubheaders()&lt;br /&gt;
    if args.subheader then&lt;br /&gt;
        args.subheader1 = args.subheader&lt;br /&gt;
    end&lt;br /&gt;
    if args.subheaderrowclass then&lt;br /&gt;
        args.subheaderrowclass1 = args.subheaderrowclass&lt;br /&gt;
    end&lt;br /&gt;
    local subheadernums = getArgNums('subheader')&lt;br /&gt;
    for k, num in ipairs(subheadernums) do&lt;br /&gt;
        addRow({&lt;br /&gt;
            data = args['subheader' .. tostring(num)],&lt;br /&gt;
            datastyle = args.subheaderstyle or args['subheaderstyle' .. tostring(num)],&lt;br /&gt;
            class = args.subheaderclass,&lt;br /&gt;
            rowclass = args['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.image then&lt;br /&gt;
        args.image1 = args.image&lt;br /&gt;
    end&lt;br /&gt;
    if args.caption then&lt;br /&gt;
        args.caption1 = args.caption&lt;br /&gt;
    end&lt;br /&gt;
    local imagenums = getArgNums('image')&lt;br /&gt;
    for k, num in ipairs(imagenums) do&lt;br /&gt;
        local caption = args['caption' .. tostring(num)]&lt;br /&gt;
        local data = HtmlBuilder.create().wikitext(args['image' .. tostring(num)])&lt;br /&gt;
        if caption then&lt;br /&gt;
            data&lt;br /&gt;
                .tag('div')&lt;br /&gt;
                    .cssText(args.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.imagestyle,&lt;br /&gt;
            class = args.imageclass,&lt;br /&gt;
            rowclass = args['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('header'), getArgNums('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['header' .. tostring(num)],&lt;br /&gt;
            label = args['label' .. tostring(num)],&lt;br /&gt;
            data = args['data' .. tostring(num)],&lt;br /&gt;
            datastyle = args.datastyle,&lt;br /&gt;
            class = args['class' .. tostring(num)],&lt;br /&gt;
            rowclass = args['rowclass' .. tostring(num)],&lt;br /&gt;
            dataid = args['dataid' .. tostring(num)],&lt;br /&gt;
            labelid = args['labelid' .. tostring(num)],&lt;br /&gt;
            headerid = args['headerid' .. tostring(num)],&lt;br /&gt;
            rowid = args['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.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(mw.getCurrentFrame():expandTemplate({ &lt;br /&gt;
                    title = 'navbar', &lt;br /&gt;
                    args = { args.name, mini = 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.decat ~= 'yes' then&lt;br /&gt;
        if #(getArgNums('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.child == 'yes' and args.title then&lt;br /&gt;
            root.wikitext('[[Category:Articles 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.child ~= 'yes' then&lt;br /&gt;
        root = HtmlBuilder.create('table')&lt;br /&gt;
        &lt;br /&gt;
        root&lt;br /&gt;
            .addClass('infobox')&lt;br /&gt;
            .addClass(args.bodyclass)&lt;br /&gt;
            .attr('cellspacing', 3)&lt;br /&gt;
            .css('border-spacing', '3px')&lt;br /&gt;
            &lt;br /&gt;
            if args.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;
            else&lt;br /&gt;
                root&lt;br /&gt;
                    .css('width', '22em')&lt;br /&gt;
            end&lt;br /&gt;
        root&lt;br /&gt;
            .cssText(args.bodystyle)&lt;br /&gt;
    &lt;br /&gt;
        renderTitle()&lt;br /&gt;
        renderAboveRow()&lt;br /&gt;
    else&lt;br /&gt;
        root = HtmlBuilder.create()&lt;br /&gt;
        &lt;br /&gt;
        root&lt;br /&gt;
            .wikitext(args.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('child')&lt;br /&gt;
    preprocessSingleArg('bodyclass')&lt;br /&gt;
    preprocessSingleArg('subbox')&lt;br /&gt;
    preprocessSingleArg('bodystyle')&lt;br /&gt;
    preprocessSingleArg('title')&lt;br /&gt;
    preprocessSingleArg('titleclass')&lt;br /&gt;
    preprocessSingleArg('titlestyle')&lt;br /&gt;
    preprocessSingleArg('above')&lt;br /&gt;
    preprocessSingleArg('aboveclass')&lt;br /&gt;
    preprocessSingleArg('abovestyle')&lt;br /&gt;
    preprocessArgs({&lt;br /&gt;
        {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}&lt;br /&gt;
    }, 10)&lt;br /&gt;
    preprocessSingleArg('subheaderstyle')&lt;br /&gt;
    preprocessSingleArg('subheaderclass')&lt;br /&gt;
    preprocessArgs({&lt;br /&gt;
        {prefix = 'image', depend = {'caption', 'imagerowclass'}}&lt;br /&gt;
    }, 10)&lt;br /&gt;
    preprocessSingleArg('captionstyle')&lt;br /&gt;
    preprocessSingleArg('imagestyle')&lt;br /&gt;
    preprocessSingleArg('imageclass')&lt;br /&gt;
    preprocessArgs({&lt;br /&gt;
        {prefix = 'header'},&lt;br /&gt;
        {prefix = 'data', depend = {'label'}},&lt;br /&gt;
        {prefix = 'rowclass'},&lt;br /&gt;
        {prefix = 'class'},&lt;br /&gt;
        {prefix = 'dataid'},&lt;br /&gt;
        {prefix = 'labelid'},&lt;br /&gt;
        {prefix = 'headerid'},&lt;br /&gt;
        {prefix = 'rowid'}&lt;br /&gt;
    }, 50)&lt;br /&gt;
    preprocessSingleArg('headerclass')&lt;br /&gt;
    preprocessSingleArg('headerstyle')&lt;br /&gt;
    preprocessSingleArg('labelstyle')&lt;br /&gt;
    preprocessSingleArg('datastyle')&lt;br /&gt;
    preprocessSingleArg('below')&lt;br /&gt;
    preprocessSingleArg('belowclass')&lt;br /&gt;
    preprocessSingleArg('belowstyle')&lt;br /&gt;
    preprocessSingleArg('name')&lt;br /&gt;
    args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent&lt;br /&gt;
    preprocessSingleArg('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>Arthur</name></author>
	</entry>
	<entry>
		<id>https://baripedia.org/index.php?title=Module:Infobox&amp;diff=11734&amp;oldid=prev</id>
		<title>Arthur : 1 version</title>
		<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Infobox&amp;diff=11734&amp;oldid=prev"/>
		<updated>2014-05-02T21:57:09Z</updated>

		<summary type="html">&lt;p&gt;1 version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Infobox = {}&lt;br /&gt;
local i18n = {&lt;br /&gt;
    ['see doc'] = 'Documentation du modèle',&lt;br /&gt;
    ['edit infobox'] = 'Modifier l\'infobox',&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Infobox:new( args )&lt;br /&gt;
    -- Initialisation de l'object&lt;br /&gt;
    local object = {&lt;br /&gt;
        text = &amp;quot;&amp;quot;,&lt;br /&gt;
        isPart = false&lt;br /&gt;
    }&lt;br /&gt;
    setmetatable(object, {&lt;br /&gt;
        __index = Infobox,&lt;br /&gt;
        __tostring = function( self ) return self:tostring() end&lt;br /&gt;
    })&lt;br /&gt;
&lt;br /&gt;
    if args.isPart then&lt;br /&gt;
        object.isPart = true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Ouverture de l'élément principal de l'infobox&lt;br /&gt;
    if object.isPart then&lt;br /&gt;
        return object -- On retourne si on construit seulement un module&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local class = args.class&lt;br /&gt;
    if class == nil or class == '' then&lt;br /&gt;
        class = &amp;quot;infobox_v3&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local style = args.style&lt;br /&gt;
&lt;br /&gt;
    local str = '&amp;lt;div class=&amp;quot;' .. class .. '&amp;quot;'&lt;br /&gt;
    if args.style then&lt;br /&gt;
    	str = str .. ' style= &amp;quot;' .. table.concat( args.style, '; ' ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	object.text = str .. '&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
    return object&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addTitle( args )&lt;br /&gt;
    local str = '&amp;lt;p'&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. ' class= &amp;quot;' .. args.class ..'&amp;quot;'&lt;br /&gt;
    else&lt;br /&gt;
        str = str .. ' class= &amp;quot;entete&amp;quot;'&lt;br /&gt;
    end  &lt;br /&gt;
&lt;br /&gt;
    if args.style then&lt;br /&gt;
        str = str .. ' style= &amp;quot;' .. table.concat( args.style, '; ' ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    str = str .. '&amp;gt;'&lt;br /&gt;
    &lt;br /&gt;
    if args.text and args.text ~= '' then&lt;br /&gt;
        str = str .. args.text&lt;br /&gt;
    else&lt;br /&gt;
        str = str .. mw.title.getCurrentTitle().text&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    self.text = self.text .. str .. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addText( args )&lt;br /&gt;
    local str = '&amp;lt;p'&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. ' class= &amp;quot;' .. args.class ..'&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if args.style then&lt;br /&gt;
        str = str .. ' style= &amp;quot;' .. table.concat( args.style, '; ' ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    str = str .. '&amp;gt;'&lt;br /&gt;
    &lt;br /&gt;
    if args.text then &lt;br /&gt;
        str = str .. args.text&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    self.text = self.text .. str .. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:openTable( args )&lt;br /&gt;
    local str = '&amp;lt;table'&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. ' class=&amp;quot;' .. args.class .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if args.style then&lt;br /&gt;
        str = str .. ' style= &amp;quot;' .. table.concat( args.style, '; ' ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    str = str .. '&amp;gt;'&lt;br /&gt;
    &lt;br /&gt;
    if args.text and args.text ~= '' then&lt;br /&gt;
        str = str .. '&amp;lt;caption'&lt;br /&gt;
        if args.styleCaption then&lt;br /&gt;
            str = str .. ' style= &amp;quot;' .. table.concat( args.styleCaption, '; ' ) .. '&amp;quot;'&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. '&amp;gt;' .. args.text .. '&amp;lt;/caption&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    self.text = self.text .. str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:closeTable( args )&lt;br /&gt;
    self.text = self.text .. '&amp;lt;/table&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addMixedRow( args )&lt;br /&gt;
    if not args.value or args.value == '' then&lt;br /&gt;
        if args.cat then &lt;br /&gt;
            self.text = self.text .. '[[Catégorie:' .. args.cat .. ']]'-- ajoute catégorie de maintenance&lt;br /&gt;
        end&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    if not args.label then&lt;br /&gt;
        self.text = self.text .. '&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;error&amp;quot;&amp;gt;Le paramètre label n\'est pas renseigné.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local str = '&amp;lt;tr&amp;gt;&amp;lt;th scope=&amp;quot;row&amp;quot;'&lt;br /&gt;
    if args.styleHeader then&lt;br /&gt;
        str = str .. ' style= &amp;quot;' .. table.concat( args.styleHeader, '; ' ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    self.text = self.text .. str .. '&amp;gt;' .. args.label .. '&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;'&lt;br /&gt;
    &lt;br /&gt;
    if args.hidden and args.hidden == 1 then  -- option caché sélectionné: affichage de la valeur sera masqué&lt;br /&gt;
        self.text = self.text .. '&amp;lt;div class=&amp;quot;NavFrame&amp;quot; title=&amp;quot;[Afficher]/[Masquer]&amp;quot; style=&amp;quot;border: none; padding: 0;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;NavContent&amp;quot; style=&amp;quot;display: none; text-align: left;&amp;quot;&amp;gt;' .. args.value ..'&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
    elseif args.weblink and args.weblink ~= '' then  -- option lien externe&lt;br /&gt;
        self.text = self.text .. '&amp;lt;span class=&amp;quot;reflink plainlinksneverexpand&amp;quot;&amp;gt;[' .. args.weblink .. args.value .. ' ' .. args.value .. ']&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
    else&lt;br /&gt;
        self.text = self.text .. args.value .. '&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'  -- affichage normal de la valeur&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addDoubledRow( args )&lt;br /&gt;
    if not args.value or args.value == '' then&lt;br /&gt;
        if args.cat then &lt;br /&gt;
            self.text = self.text .. '[[Catégorie:' .. args.cat .. ']]'-- ajoute catégorie de maintenance&lt;br /&gt;
        end&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    if not args.label then&lt;br /&gt;
        self.text = self.text .. '&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;error&amp;quot;&amp;gt;Le paramètre label n\'est pas renseigné!!!&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local str = '&amp;lt;tr&amp;gt;&amp;lt;td scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot;'&lt;br /&gt;
    if args.styleHeader then&lt;br /&gt;
        str = str .. ' style= &amp;quot;' .. table.concat( args.styleHeader, '; ' ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    str = str .. '&amp;gt;' .. args.label .. '&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot;'&lt;br /&gt;
    if args.styleValue then&lt;br /&gt;
        str = str .. ' style= &amp;quot;' .. table.concat( args.styleValue, '; ' ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    self.text = self.text .. str .. '&amp;gt;' .. args.value ..'&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addImages( args )&lt;br /&gt;
    --Get images&lt;br /&gt;
    local images = {}&lt;br /&gt;
    if not args.images then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    for i,conf in pairs( args.images ) do&lt;br /&gt;
        if conf.name and conf.name ~= '' then&lt;br /&gt;
            table.insert( images, conf )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not next( images ) then&lt;br /&gt;
        return --Pas d'images&lt;br /&gt;
    end&lt;br /&gt;
    local imagesCount = table.maxn( images )&lt;br /&gt;
&lt;br /&gt;
    local str = ''&lt;br /&gt;
    if imagesCount == 2 then&lt;br /&gt;
        str = '&amp;lt;div class=&amp;quot;image2&amp;quot;'&lt;br /&gt;
        if args.background then&lt;br /&gt;
            str = str .. ' style=&amp;quot;background: ' .. args.background .. ';&amp;quot;'&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. '&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    for i,image in pairs( images ) do&lt;br /&gt;
        -- hack pour enlever puis remettre la catégorie de tracking Wikidata du nom de fichier&lt;br /&gt;
        local t = mw.text.split( image.name, '[[', true )&lt;br /&gt;
        local imagename = t[1]&lt;br /&gt;
        local cat = ''&lt;br /&gt;
        if t[2] then&lt;br /&gt;
            cat = '[[' .. t[2]&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. cat ..  '[[Fichier:' .. imagename .. '|thumb'&lt;br /&gt;
        if imagesCount == 1 then&lt;br /&gt;
            str = str .. '|center'&lt;br /&gt;
        end&lt;br /&gt;
        if image.upright then&lt;br /&gt;
            str = str .. '|upright=' .. image.upright&lt;br /&gt;
        else&lt;br /&gt;
            str = str .. '|upright=' .. ( 1 / imagesCount )&lt;br /&gt;
        end&lt;br /&gt;
        if image.alt then&lt;br /&gt;
            str = str .. '|alt=' .. image.alt&lt;br /&gt;
        else&lt;br /&gt;
            str = str .. '|alt=Description de '&lt;br /&gt;
            if args.legend then&lt;br /&gt;
                str = str .. 'cette image, également commentée ci-après'&lt;br /&gt;
            else&lt;br /&gt;
                str = str .. 'l\'image ' .. image.name&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. ']]'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if imagesCount == 2 then&lt;br /&gt;
        str = str .. '&amp;lt;/div&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if args.legend then&lt;br /&gt;
        str = str .. '&amp;lt;p class=&amp;quot;legend&amp;quot;&amp;gt;' .. args.legend .. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    self.text = self.text .. str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addFooter( args )&lt;br /&gt;
    local templatename = args.templatename&lt;br /&gt;
    local pagename = mw.title.getCurrentTitle().prefixedText&lt;br /&gt;
    local class = args.class or ''&lt;br /&gt;
    local itemlink = ''&lt;br /&gt;
    if args.item then&lt;br /&gt;
        itemlink = ' - [[d:' .. args.item .. '|modifier l\'élément Wikidata]]'&lt;br /&gt;
    end&lt;br /&gt;
    text = '&amp;lt;p class=&amp;quot;navbar noprint ' .. class .. '&amp;quot; style=&amp;quot;1px;&amp;quot;&amp;gt;' &lt;br /&gt;
        .. '&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;'&lt;br /&gt;
        .. '[' .. tostring( mw.uri.fullUrl( pagename, '&amp;amp;action=edit&amp;amp;section=0' ) ) .. ' ' .. i18n['edit infobox'] .. ']'&lt;br /&gt;
        .. itemlink&lt;br /&gt;
        .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
        .. '[[Image:Gtk-dialog-info.svg|12px|link=' .. templatename .. '|' .. i18n['see doc'] .. ']]'&lt;br /&gt;
        .. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
    self.text = self.text .. text&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
function Infobox:tostring()&lt;br /&gt;
    if self.isPart then&lt;br /&gt;
        return self.text&lt;br /&gt;
    else&lt;br /&gt;
        return self.text .. '&amp;lt;/div&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Create a style property value from an array CSS property = CSS value&lt;br /&gt;
--function formatStyle( args )&lt;br /&gt;
--    local elems = {}&lt;br /&gt;
--    for key, val in pairs( args ) do&lt;br /&gt;
--        table.insert( elems, key .. ':' .. val )&lt;br /&gt;
--    end&lt;br /&gt;
--    return table.concat( elems, '; ' )&lt;br /&gt;
--end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.new( args )&lt;br /&gt;
    return Infobox:new( args )&lt;br /&gt;
end&lt;br /&gt;
function p.test()&lt;br /&gt;
    local a = Infobox:new( {} )&lt;br /&gt;
    a:addTitle( {} )&lt;br /&gt;
    a:addImages( {&lt;br /&gt;
        images = {&lt;br /&gt;
            {&lt;br /&gt;
                name = 'Pellicule.jpg'&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                name = 'Pellicule.jpg'&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        legend = 'legend'&lt;br /&gt;
    } )&lt;br /&gt;
    a:openTable( {} )&lt;br /&gt;
    a:addMixedRow( {&lt;br /&gt;
        label = 'Test',&lt;br /&gt;
        value = 'test'&lt;br /&gt;
    } )&lt;br /&gt;
    a:closeTable( {} )&lt;br /&gt;
    return tostring(a)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Arthur</name></author>
	</entry>
	<entry>
		<id>https://baripedia.org/index.php?title=Module:Infobox&amp;diff=8669&amp;oldid=prev</id>
		<title>Arthur : 1 version</title>
		<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Infobox&amp;diff=8669&amp;oldid=prev"/>
		<updated>2014-01-26T09:41:57Z</updated>

		<summary type="html">&lt;p&gt;1 version&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;fr&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 26 janvier 2014 à 11:41&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Arthur</name></author>
	</entry>
	<entry>
		<id>https://baripedia.org/index.php?title=Module:Infobox&amp;diff=7459&amp;oldid=prev</id>
		<title>Arthur : 1 version</title>
		<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Infobox&amp;diff=7459&amp;oldid=prev"/>
		<updated>2014-01-13T21:50:53Z</updated>

		<summary type="html">&lt;p&gt;1 version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Infobox = {}&lt;br /&gt;
local i18n = {&lt;br /&gt;
	['see doc'] = 'Documentation du modèle',&lt;br /&gt;
	['edit infobox'] = 'Modifier l\'infobox',&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Infobox:new( args )&lt;br /&gt;
    --Object initialisation&lt;br /&gt;
    local object = {&lt;br /&gt;
        text = &amp;quot;&amp;quot;,&lt;br /&gt;
        isPart = false&lt;br /&gt;
    }&lt;br /&gt;
    setmetatable(object, {&lt;br /&gt;
        __index = Infobox,&lt;br /&gt;
        __tostring = function( self ) return self:tostring() end&lt;br /&gt;
    })&lt;br /&gt;
&lt;br /&gt;
    if args.isPart then&lt;br /&gt;
        object.isPart = true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Open main div&lt;br /&gt;
    if object.isPart then&lt;br /&gt;
        return object --On retourne si on construit seulement un module&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local str = '&amp;lt;div class=&amp;quot;'&lt;br /&gt;
    if args.typeInfobox then&lt;br /&gt;
        str = str .. args.typeInfobox&lt;br /&gt;
    else&lt;br /&gt;
    	str = str .. 'infobox_v3'&lt;br /&gt;
    end&lt;br /&gt;
    str = str ..'&amp;quot;'&lt;br /&gt;
    if args.styleInfobox then&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. args.styleInfobox .. '&amp;quot;'&lt;br /&gt;
    -- else&lt;br /&gt;
    	--str = str .. ' style=&amp;quot;width: ' .. args.width .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local class = args.class&lt;br /&gt;
    if not class then&lt;br /&gt;
    	class = &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    object.text = str .. '&amp;gt;'&lt;br /&gt;
    return object&lt;br /&gt;
end&lt;br /&gt;
function Infobox:addText( args )&lt;br /&gt;
	if args.text then &lt;br /&gt;
		self.text = self.text .. args.text&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addFooter( args)&lt;br /&gt;
    local templatename = args.templatename&lt;br /&gt;
    local pagename = mw.title.getCurrentTitle().prefixedText&lt;br /&gt;
    local class = args.class&lt;br /&gt;
    if not class then&lt;br /&gt;
    	class = &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    local itemlink = ''&lt;br /&gt;
    local item = args.item&lt;br /&gt;
    if item then&lt;br /&gt;
    	itemlink = ' - [[d:' .. item .. '|modifier l\'élément Wikidata]]'&lt;br /&gt;
	end&lt;br /&gt;
    text = '&amp;lt;p class=&amp;quot;navbar noprint' .. class .. 'style=1px;&amp;quot;&amp;gt;' &lt;br /&gt;
		.. '&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;'&lt;br /&gt;
		.. '[' .. tostring(mw.uri.fullUrl(pagename,'&amp;amp;action=edit&amp;amp;section=0')) .. ' ' .. i18n['edit infobox'] .. ']'&lt;br /&gt;
		.. itemlink&lt;br /&gt;
		.. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
		.. '[[Image:Gtk-dialog-info.svg|12px|link=' .. templatename .. '|' .. i18n['see doc'] .. ']]'&lt;br /&gt;
		.. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
	self.text = self.text .. text&lt;br /&gt;
end &lt;br /&gt;
function Infobox:addTitle( args )&lt;br /&gt;
    local str = '&amp;lt;p class=&amp;quot;entete'&lt;br /&gt;
    if args.icon then&lt;br /&gt;
        str = str .. ' icon ' .. args.icon&lt;br /&gt;
    end&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. ' ' .. args.class&lt;br /&gt;
    end&lt;br /&gt;
    str = str .. '&amp;quot;'&lt;br /&gt;
    if args.background then&lt;br /&gt;
        local style = {}&lt;br /&gt;
        style['background-color'] = args.background&lt;br /&gt;
        if args['border-color'] then&lt;br /&gt;
            style['border-color'] = args['border-color']&lt;br /&gt;
        else&lt;br /&gt;
            style['border-color'] = args.background&lt;br /&gt;
        end&lt;br /&gt;
        if args.color then&lt;br /&gt;
            style['color'] = args.color&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. formatStyle( style ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    str = str .. '&amp;gt;'&lt;br /&gt;
    if args.text and args.text ~= '' then&lt;br /&gt;
        str = str .. args.text&lt;br /&gt;
    else&lt;br /&gt;
        str = str .. mw.title.getCurrentTitle().text&lt;br /&gt;
    end&lt;br /&gt;
    self.text = self.text .. str .. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:openTable( args )&lt;br /&gt;
    local str = '&amp;lt;table'&lt;br /&gt;
    str = str .. '&amp;gt;&amp;lt;caption'&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. ' class=&amp;quot;' .. args.class .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Style of the caption&lt;br /&gt;
    local style = {}&lt;br /&gt;
    if args.border then&lt;br /&gt;
        style['border-color'] = args.border&lt;br /&gt;
    end&lt;br /&gt;
    if args.background then&lt;br /&gt;
        style['background'] = args.background&lt;br /&gt;
        if args.color then&lt;br /&gt;
            style['color'] = args.color&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if next( style ) then&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. formatStyle( style ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    str = str .. '&amp;gt;'&lt;br /&gt;
    if args.text and args.text ~= '' then&lt;br /&gt;
        str = str .. args.text&lt;br /&gt;
    else&lt;br /&gt;
        str = str .. 'Données clés'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    self.text = self.text .. str .. '&amp;lt;/caption&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:closeTable( args )&lt;br /&gt;
    self.text = self.text .. '&amp;lt;/table&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addMixedRow( args )&lt;br /&gt;
    if not args.value or args.value == '' then&lt;br /&gt;
    	if args.cat then &lt;br /&gt;
    		self.text = self.text .. '[[Catégorie:' .. args.cat .. ']]'-- ajoute catégorie de maintenance&lt;br /&gt;
    	end&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    if not args.label then&lt;br /&gt;
        self.text = self.text .. '&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;error&amp;quot;&amp;gt;Le paramètre label n\'est pas renseigné.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    local str = '&amp;lt;tr&amp;gt;&amp;lt;th scope=&amp;quot;row&amp;quot;'&lt;br /&gt;
    if args.styleHeader then&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. args.styleHeader .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local style = {}&lt;br /&gt;
    if args.width then&lt;br /&gt;
        style['width'] =  args.width .. 'em'&lt;br /&gt;
    end&lt;br /&gt;
    if next( style ) then&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. formatStyle( style ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    self.text = self.text .. str .. '&amp;gt;' .. args.label .. '&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;'&lt;br /&gt;
    &lt;br /&gt;
    if args.hidden and args.hidden == 1 then  -- option caché sélectionné: affichage de la valeur sera masqué&lt;br /&gt;
        self.text = self.text .. '&amp;lt;div class=&amp;quot;NavFrame&amp;quot; title=&amp;quot;[Afficher]/[Masquer]&amp;quot; style=&amp;quot;border: none; padding: 0;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;NavContent&amp;quot; style=&amp;quot;display: none; text-align: left;&amp;quot;&amp;gt;' .. args.value ..'&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
    elseif args.weblink and args.weblink ~= '' then  -- option lien externe&lt;br /&gt;
    	self.text = self.text .. '&amp;lt;span class=&amp;quot;reflink plainlinksneverexpand&amp;quot;&amp;gt;[' .. args.weblink .. args.value .. ' ' .. args.value .. ']&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
    else&lt;br /&gt;
        self.text = self.text .. args.value .. '&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'  -- affichage normal de la valeur&lt;br /&gt;
    end &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addDoubledRow( args )&lt;br /&gt;
	if not args.value or args.value == '' then&lt;br /&gt;
    	if args.cat then &lt;br /&gt;
    		self.text = self.text .. '[[Catégorie:' .. args.cat .. ']]'-- ajoute catégorie de maintenance&lt;br /&gt;
    	end&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    if not args.label then&lt;br /&gt;
        self.text = self.text .. '&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;error&amp;quot;&amp;gt;Le paramètre label n\'est pas renseigné!!!&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    local str = '&amp;lt;tr&amp;gt;&amp;lt;td scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot;'&lt;br /&gt;
    &lt;br /&gt;
    if args.styleHeader then -- ajout de format applicable au label&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. args.styleHeader .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    self.text = self.text .. str .. '&amp;gt;' .. args.label .. '&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot;'&lt;br /&gt;
    str = ''&lt;br /&gt;
    if args.styleValue then -- ajout de format applicable à la valeur&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. args.styleValue .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    self.text = self.text .. str .. '&amp;gt;' .. args.value ..'&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addImages( args )&lt;br /&gt;
    --Get images&lt;br /&gt;
    local images = {}&lt;br /&gt;
    if not args.images then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    for i,conf in pairs( args.images ) do&lt;br /&gt;
        if conf.name and conf.name ~= '' then&lt;br /&gt;
            table.insert( images, conf )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not next( images ) then&lt;br /&gt;
        return --Pas d'images&lt;br /&gt;
    end&lt;br /&gt;
    local imagesCount = table.maxn( images )&lt;br /&gt;
&lt;br /&gt;
    local str = ''&lt;br /&gt;
    if imagesCount == 2 then&lt;br /&gt;
        str = '&amp;lt;div class=&amp;quot;image2&amp;quot;'&lt;br /&gt;
        if args.background then&lt;br /&gt;
            str = str .. ' style=&amp;quot;background: ' .. args.background .. ';&amp;quot;'&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. '&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    for i,image in pairs( images ) do&lt;br /&gt;
    	-- hack pour enlever puis remettre la catégorie de tracking Wikidata du nom de fichier&lt;br /&gt;
    	local t = mw.text.split( image.name, '[[', true )&lt;br /&gt;
    	local imagename = t[1]&lt;br /&gt;
    	local cat = ''&lt;br /&gt;
    	if t[2] then&lt;br /&gt;
    		cat = '[[' .. t[2]&lt;br /&gt;
		end&lt;br /&gt;
        str = str .. cat ..  '[[Fichier:' .. imagename .. '|thumb'&lt;br /&gt;
        if imagesCount == 1 then&lt;br /&gt;
            str = str .. '|center'&lt;br /&gt;
        end&lt;br /&gt;
        if image.upright then&lt;br /&gt;
            str = str .. '|upright=' .. image.upright&lt;br /&gt;
        else&lt;br /&gt;
            str = str .. '|upright=' .. ( 1 / imagesCount )&lt;br /&gt;
        end&lt;br /&gt;
        if image.alt then&lt;br /&gt;
            str = str .. '|alt=' .. image.alt&lt;br /&gt;
        else&lt;br /&gt;
            str = str .. '|alt=Description de '&lt;br /&gt;
            if args.legend then&lt;br /&gt;
                str = str .. 'cette image, également commentée ci-après'&lt;br /&gt;
            else&lt;br /&gt;
                str = str .. 'l\'image ' .. image.name&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. ']]'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if imagesCount == 2 then&lt;br /&gt;
        str = str .. '&amp;lt;/div&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if args.legend then&lt;br /&gt;
        str = str .. '&amp;lt;p class=&amp;quot;legend&amp;quot;&amp;gt;' .. args.legend .. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    self.text = self.text .. str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:tostring()&lt;br /&gt;
    if self.isPart then&lt;br /&gt;
        return self.text&lt;br /&gt;
    else&lt;br /&gt;
        return self.text .. '&amp;lt;/div&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Create a style property value from an array CSS property = CSS value&lt;br /&gt;
function formatStyle( args )&lt;br /&gt;
    local elems = {}&lt;br /&gt;
    for key, val in pairs( args ) do&lt;br /&gt;
        table.insert( elems, key .. ':' .. val )&lt;br /&gt;
    end&lt;br /&gt;
    return table.concat( elems, '; ' )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.new( args )&lt;br /&gt;
    return Infobox:new( args )&lt;br /&gt;
end&lt;br /&gt;
function p.test()&lt;br /&gt;
    local a = Infobox:new( {} )&lt;br /&gt;
    a:addTitle( {} )&lt;br /&gt;
    a:addImages( {&lt;br /&gt;
        images = {&lt;br /&gt;
            {&lt;br /&gt;
                name = 'Pellicule.jpg'&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                name = 'Pellicule.jpg'&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        legend = 'legend'&lt;br /&gt;
    } )&lt;br /&gt;
    a:openTable( {} )&lt;br /&gt;
    a:addMixedRow( {&lt;br /&gt;
        label = 'Test',&lt;br /&gt;
        value = 'test'&lt;br /&gt;
    } )&lt;br /&gt;
    a:closeTable( {} )&lt;br /&gt;
    return tostring(a)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Arthur</name></author>
	</entry>
	<entry>
		<id>https://baripedia.org/index.php?title=Module:Infobox&amp;diff=4262&amp;oldid=prev</id>
		<title>Arthur : 1 version</title>
		<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Infobox&amp;diff=4262&amp;oldid=prev"/>
		<updated>2013-08-18T11:45:47Z</updated>

		<summary type="html">&lt;p&gt;1 version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Infobox = {}&lt;br /&gt;
&lt;br /&gt;
function Infobox:new( args )&lt;br /&gt;
    --Object initialisation&lt;br /&gt;
    local object = {&lt;br /&gt;
        text = &amp;quot;&amp;quot;,&lt;br /&gt;
        isPart = false,&lt;br /&gt;
        entity = nil --Lazy loading of the related Wikidata item&lt;br /&gt;
    }&lt;br /&gt;
    setmetatable(object, {&lt;br /&gt;
        __index = Infobox,&lt;br /&gt;
        __tostring = function( self ) return self:tostring() end&lt;br /&gt;
    })&lt;br /&gt;
&lt;br /&gt;
    if args.isPart then&lt;br /&gt;
        object.isPart = true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Open main div&lt;br /&gt;
    if object.isPart then&lt;br /&gt;
        return object --On retourne si on construit seulement un module&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local str = '&amp;lt;div class=&amp;quot;infobox_v3 '&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. args.class&lt;br /&gt;
    end&lt;br /&gt;
    str = str ..'&amp;quot;'&lt;br /&gt;
    if args.width then&lt;br /&gt;
        str = str .. ' style=&amp;quot;width: ' .. args.width .. 'em&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    object.text = str .. '&amp;gt;'&lt;br /&gt;
    return object&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addText( args )&lt;br /&gt;
    self.text = self.text .. args.text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:getEntity()&lt;br /&gt;
    if self.entity == nil then&lt;br /&gt;
        self.entity = mw.wikibase.getEntity()&lt;br /&gt;
    end&lt;br /&gt;
    return self.entity&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addTitle( args )&lt;br /&gt;
    local str = '&amp;lt;p class=&amp;quot;entete'&lt;br /&gt;
    if args.icon then&lt;br /&gt;
        str = str .. ' icon ' .. args.icon&lt;br /&gt;
    end&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. ' ' .. args.class&lt;br /&gt;
    end&lt;br /&gt;
    str = str .. '&amp;quot;'&lt;br /&gt;
    if args.background then&lt;br /&gt;
        local style = {}&lt;br /&gt;
        style['background-color'] = args.background&lt;br /&gt;
        if args['border-color'] then&lt;br /&gt;
            style['border-color'] = args['border-color']&lt;br /&gt;
        else&lt;br /&gt;
            style['border-color'] = args.background&lt;br /&gt;
        end&lt;br /&gt;
        if args.color then&lt;br /&gt;
            style['color'] = args.color&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. formatStyle( style ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
    str = str .. '&amp;gt;'&lt;br /&gt;
    if args.text and args.text ~= '' then&lt;br /&gt;
        str = str .. args.text&lt;br /&gt;
    else&lt;br /&gt;
        str = str .. mw.title.getCurrentTitle().text&lt;br /&gt;
    end&lt;br /&gt;
    self.text = self.text .. str .. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:openTable( args )&lt;br /&gt;
    local str = '&amp;lt;table'&lt;br /&gt;
    str = str .. '&amp;gt;&amp;lt;caption'&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. ' class=&amp;quot;' .. args.class .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Style of the caption&lt;br /&gt;
    local style = {}&lt;br /&gt;
    if args.border then&lt;br /&gt;
        style['border-color'] = args.border&lt;br /&gt;
    end&lt;br /&gt;
    if args.background then&lt;br /&gt;
        style['background'] = args.background&lt;br /&gt;
        if args.color then&lt;br /&gt;
            style['color'] = args.color&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if next( style ) then&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. formatStyle( style ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    str = str .. '&amp;gt;'&lt;br /&gt;
    if args.text and args.text ~= '' then&lt;br /&gt;
        str = str .. args.text&lt;br /&gt;
    else&lt;br /&gt;
        str = str .. 'Données clés'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    self.text = self.text .. str .. '&amp;lt;/caption&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:closeTable( args )&lt;br /&gt;
    self.text = self.text .. '&amp;lt;/table&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addMixedRow( args )&lt;br /&gt;
&lt;br /&gt;
    --Get value from Wikidata if needed&lt;br /&gt;
    if args.property and ( not args.value or args.value == '' ) then&lt;br /&gt;
        local entity = self:getEntity()&lt;br /&gt;
        if entity then&lt;br /&gt;
            local Wikidata = require 'Module:Wikidata'&lt;br /&gt;
            args.value = Wikidata.formatStatementsFromLua( { &lt;br /&gt;
                entity = entity,&lt;br /&gt;
                property = args.property,&lt;br /&gt;
                rank = args.rank&lt;br /&gt;
            } )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not args.value or args.value == '' then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    if not args.label then&lt;br /&gt;
        self.text = self.text .. '&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;error&amp;quot;&amp;gt;Le paramètre label n\'est pas renseigné.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    local str = '&amp;lt;tr&amp;gt;&amp;lt;th scope=&amp;quot;row&amp;quot;'&lt;br /&gt;
    if args.class then&lt;br /&gt;
        str = str .. ' class=&amp;quot;' .. args.class .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local style = {}&lt;br /&gt;
    if args.width then&lt;br /&gt;
        style['width'] =  args.width .. 'em'&lt;br /&gt;
    end&lt;br /&gt;
    if next( style ) then&lt;br /&gt;
        str = str .. ' style=&amp;quot;' .. formatStyle( style ) .. '&amp;quot;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    self.text = self.text .. str .. '&amp;gt;' .. args.label .. '&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;' .. args.value .. '&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:addImages( args )&lt;br /&gt;
    --Get images&lt;br /&gt;
    local images = {}&lt;br /&gt;
    if not args.images then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    for i,conf in pairs( args.images ) do&lt;br /&gt;
        if conf.name and conf.name ~= '' then&lt;br /&gt;
            table.insert( images, conf )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not next( images ) then&lt;br /&gt;
        return --Pas d'images&lt;br /&gt;
    end&lt;br /&gt;
    local imagesCount = table.maxn( images )&lt;br /&gt;
&lt;br /&gt;
    local str = ''&lt;br /&gt;
    if imagesCount == 2 then&lt;br /&gt;
        str = '&amp;lt;div class=&amp;quot;image2&amp;quot;'&lt;br /&gt;
        if args.background then&lt;br /&gt;
            str = str .. ' style=&amp;quot;background: ' .. args.background .. ';&amp;quot;'&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. '&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    for i,image in pairs( images ) do&lt;br /&gt;
        str = str .. '[[Fichier:' .. image.name .. '|thumb'&lt;br /&gt;
        if imagesCount == 1 then&lt;br /&gt;
            str = str .. '|center'&lt;br /&gt;
        end&lt;br /&gt;
        if image.upright then&lt;br /&gt;
            str = str .. '|upright=' .. image.upright&lt;br /&gt;
        else&lt;br /&gt;
            str = str .. '|upright=' .. ( 1 / imagesCount )&lt;br /&gt;
        end&lt;br /&gt;
        if image.alt then&lt;br /&gt;
            str = str .. '|alt=' .. image.alt&lt;br /&gt;
        else&lt;br /&gt;
            str = str .. '|alt=Description de '&lt;br /&gt;
            if args.legend then&lt;br /&gt;
                str = str .. 'cette image, également commentée ci-après'&lt;br /&gt;
            else&lt;br /&gt;
                str = str .. 'l\'image ' .. image.name&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        str = str .. ']]'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if imagesCount == 2 then&lt;br /&gt;
        str = str .. '&amp;lt;/div&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if args.legend then&lt;br /&gt;
        str = str .. '&amp;lt;p class=&amp;quot;legend&amp;quot;&amp;gt;' .. args.legend .. '&amp;lt;/p&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    self.text = self.text .. str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Infobox:tostring()&lt;br /&gt;
    if self.isPart then&lt;br /&gt;
        return self.text&lt;br /&gt;
    else&lt;br /&gt;
        return self.text .. '&amp;lt;/div&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Create a style property value from an array CSS property = CSS value&lt;br /&gt;
function formatStyle( args )&lt;br /&gt;
    local elems = {}&lt;br /&gt;
    for key, val in pairs( args ) do&lt;br /&gt;
        table.insert( elems, key .. ':' .. val )&lt;br /&gt;
    end&lt;br /&gt;
    return table.concat( elems, '; ' )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.new( args )&lt;br /&gt;
    return Infobox:new( args )&lt;br /&gt;
end&lt;br /&gt;
function p.test()&lt;br /&gt;
    local a = Infobox:new( {} )&lt;br /&gt;
    a:addTitle( {} )&lt;br /&gt;
    a:addImages( {&lt;br /&gt;
        images = {&lt;br /&gt;
            {&lt;br /&gt;
                name = 'Pellicule.jpg'&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                name = 'Pellicule.jpg'&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        legend = 'legend'&lt;br /&gt;
    } )&lt;br /&gt;
    a:openTable( {} )&lt;br /&gt;
    a:addMixedRow( {&lt;br /&gt;
        label = 'Test',&lt;br /&gt;
        value = 'test'&lt;br /&gt;
    } )&lt;br /&gt;
    a:closeTable( {} )&lt;br /&gt;
    return tostring(a)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Arthur</name></author>
	</entry>
</feed>