<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://dansunegalaxie.ca/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://dansunegalaxie.ca/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox"/>
	<link rel="alternate" type="text/html" href="https://dansunegalaxie.ca/index.php?title=Module:Infobox&amp;action=history"/>
	<updated>2026-04-04T15:47:42Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://dansunegalaxie.ca/index.php?title=Module:Infobox&amp;diff=33&amp;oldid=prev</id>
		<title>Yuki : 1 version importée : Infobox</title>
		<link rel="alternate" type="text/html" href="https://dansunegalaxie.ca/index.php?title=Module:Infobox&amp;diff=33&amp;oldid=prev"/>
		<updated>2023-11-15T07:10:58Z</updated>

		<summary type="html">&lt;p&gt;1 version importée : Infobox&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 15 novembre 2023 à 03:10&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key dugwiki:diff::1.12:old-32:rev-33 --&gt;
&lt;/table&gt;</summary>
		<author><name>Yuki</name></author>
	</entry>
	<entry>
		<id>https://dansunegalaxie.ca/index.php?title=Module:Infobox&amp;diff=32&amp;oldid=prev</id>
		<title>wikipedia&gt;GrandEscogriffe : désactivation du lien vers Wikidata lorsque Wikidata est désactivé</title>
		<link rel="alternate" type="text/html" href="https://dansunegalaxie.ca/index.php?title=Module:Infobox&amp;diff=32&amp;oldid=prev"/>
		<updated>2023-11-10T19:07:48Z</updated>

		<summary type="html">&lt;p&gt;désactivation du lien vers Wikidata lorsque Wikidata est désactivé&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local wikiLang = &amp;#039;fr&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local localdata = {}-- données concernant les paramètres passés au modèle&lt;br /&gt;
&lt;br /&gt;
-- données concernant la page où est affichée l&amp;#039;infobox&lt;br /&gt;
local page = mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
local maincolor, secondcolor, thirdcolor = &amp;#039;#E1E1E1&amp;#039;, &amp;#039;#E1E1E1&amp;#039;, &amp;#039;#000000&amp;#039;&lt;br /&gt;
-- l&amp;#039;objet principal à retourner&lt;br /&gt;
local infobox = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- objets secondaires à retourner&lt;br /&gt;
local maintenance = &amp;#039;&amp;#039; -- chaîne retournée avec le module : cats de maintenance&lt;br /&gt;
local externaltext = &amp;#039;&amp;#039; -- par exemple coordonnées en titre&lt;br /&gt;
-- modules importés&lt;br /&gt;
local wd = require &amp;#039;Module:Wikidata&amp;#039;&lt;br /&gt;
local yesno = require &amp;#039;Module:Yesno&amp;#039;&lt;br /&gt;
local valueexpl = wd.translate(&amp;quot;activate-query&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- maintenance des images dupliquées&lt;br /&gt;
local usedImages = {}&lt;br /&gt;
&lt;br /&gt;
local i18n = {&lt;br /&gt;
	[&amp;#039;see doc&amp;#039;] = &amp;#039;Documentation du modèle&amp;#039;,&lt;br /&gt;
	[&amp;#039;edit&amp;#039;] = &amp;#039;modifier&amp;#039;,&lt;br /&gt;
	[&amp;#039;edit code&amp;#039;] = &amp;#039;modifier le code&amp;#039;,&lt;br /&gt;
	[&amp;#039;edit item&amp;#039;] = &amp;#039;modifier Wikidata&amp;#039;,&lt;br /&gt;
	[&amp;#039;tracking cat&amp;#039;] = &amp;quot;Page utilisant des données de Wikidata&amp;quot;,&lt;br /&gt;
	[&amp;#039;invalid block type&amp;#039;] = &amp;quot;Bloc de données invalide dans le module d&amp;#039;infobox&amp;quot;,&lt;br /&gt;
	[&amp;#039;default cat&amp;#039;] = &amp;quot;Maintenance des infobox&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function expandQuery(query)&lt;br /&gt;
	if not query.entity then&lt;br /&gt;
		query.entity = localdata.item&lt;br /&gt;
	end&lt;br /&gt;
	if not query.conjtype then&lt;br /&gt;
		query.conjtype = &amp;#039;comma&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local claims = wd.getClaims(query)&lt;br /&gt;
	if (not claims) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return wd.formatAndCat(query), wd.getgendernum(claims) -- valeur  et code indiquant le genre/nombre pour accorder le libellé&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getWikidataValue(params, wikidataparam)&lt;br /&gt;
	-- Récupère la valeur Wikidata pour la valeur, soit dans le paramètre &amp;quot;wikidata&amp;quot; soit dans le paramètre &amp;quot;property&amp;quot;&lt;br /&gt;
	if not localdata.item then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if params.blockers then -- blockers are local parameters that disable the wikidata query&lt;br /&gt;
		local blockers = params.blockers&lt;br /&gt;
		if (type(blockers) == &amp;#039;string&amp;#039;) then&lt;br /&gt;
			blockers = {blockers}&lt;br /&gt;
		end&lt;br /&gt;
		for i, blocker in ipairs(blockers) do&lt;br /&gt;
			if localdata[blocker] then&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local v, valgendernum -- la valeur à retourner, et le genre/nombre de de valeurs (pour l&amp;#039;accord grammatical)&lt;br /&gt;
&lt;br /&gt;
	if not wikidataparam then -- par défaut la valeur wikidata est dans le paramètre &amp;quot;wikidata&amp;quot; mais dans les structures composées comme &amp;quot;title&amp;quot;, il y a plusieurs paramètres wikidata&lt;br /&gt;
		wikidataparam = &amp;#039;wikidata&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if params.property and not params[wikidataparam] then params[wikidataparam] = {property = params.property} end&lt;br /&gt;
	&lt;br /&gt;
	if params[wikidataparam] then&lt;br /&gt;
		if type(params[wikidataparam]) == &amp;#039;function&amp;#039; then&lt;br /&gt;
			v, valgendernum = params[wikidataparam](localdata.item)&lt;br /&gt;
		elseif type(params[wikidataparam]) == &amp;#039;table&amp;#039; then&lt;br /&gt;
			v, valgendernum = expandQuery(params[wikidataparam])&lt;br /&gt;
		else&lt;br /&gt;
			v, valgendernum = params[wikidataparam]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not v then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if(type(valgendernum) == &amp;#039;number&amp;#039;) then&lt;br /&gt;
		if(valgendernum &amp;gt; 1) then&lt;br /&gt;
			valgendernum = &amp;#039;p&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			valgendernum = &amp;#039;s&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return v, valgendernum&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getValue(val, params)&lt;br /&gt;
	if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		return localdata[val]&lt;br /&gt;
	elseif type(val) == &amp;#039;function&amp;#039; then&lt;br /&gt;
		return val(localdata, localdata.item, params)&lt;br /&gt;
	elseif type(val) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		for i, j in pairs(val) do -- si plusieurs paramètres possibles (legacy de vieux code), prendre le premier non vide&lt;br /&gt;
			if localdata[j] then&lt;br /&gt;
				return localdata[j]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addMaintenanceCat(cat, sortkey)&lt;br /&gt;
	if page.namespace ~= 0 then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if cat then&lt;br /&gt;
		local sortkeycode&lt;br /&gt;
		if sortkey then sortkeycode = &amp;#039;|&amp;#039; .. sortkey else sortkeycode = &amp;#039;&amp;#039; end&lt;br /&gt;
		maintenance = maintenance .. &amp;#039;[[Category:&amp;#039;.. cat .. sortkeycode .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.separator(params)&lt;br /&gt;
	local style = params[&amp;#039;separator style&amp;#039;] or {}&lt;br /&gt;
	style.height = style.height or &amp;#039;2px&amp;#039;&lt;br /&gt;
	style[&amp;#039;background-color&amp;#039;] = style[&amp;#039;background-color&amp;#039;] or maincolor&lt;br /&gt;
&lt;br /&gt;
	return mw.html.create(&amp;#039;hr&amp;#039;):css( style )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
Construit le code du bloc de titre de l&amp;#039;infobox&lt;br /&gt;
&lt;br /&gt;
Paramètres (liste partielle) :&lt;br /&gt;
- value : Moyen d&amp;#039;obtenir le titre via getValue (nom de paramètre de modèle ou fonction).&lt;br /&gt;
- textdefaultvalue : Valeur par défaut du titre.&lt;br /&gt;
- icon : Pictogramme d&amp;#039;infobox (voir [[Projet:Infobox/Pictogramme]]).&lt;br /&gt;
- italic : Indique si le titre doit être affiché en italique.&lt;br /&gt;
  Si italic=true, le paramètre &amp;quot;titre en italique&amp;quot; de l&amp;#039;infobox peut forcer la désactivation.&lt;br /&gt;
- setdisplaytitle : Indique si le titre de l&amp;#039;article doit être mis en forme comme celui de l&amp;#039;infobox.&lt;br /&gt;
  Si setdisplaytitle=true, le paramètre &amp;quot;titre article en italique&amp;quot; de l&amp;#039;infobox peut forcer la désactivation.&lt;br /&gt;
]=]&lt;br /&gt;
function p.buildtitle(params)&lt;br /&gt;
	local text = getValue(params.value, params) or params.textdefaultvalue or getWikidataValue(params) or page.prefixedText&lt;br /&gt;
	local lang = localdata[&amp;#039;langue du titre&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	if lang ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		local langueFunction = require( &amp;#039;Module:Langue&amp;#039; ).langue&lt;br /&gt;
		text = langueFunction( { lang, text } )&lt;br /&gt;
	end&lt;br /&gt;
	local subtext = getValue(params.subtitle) or  getWikidataValue(params, &amp;#039;wikidatasubtitle&amp;#039;) or params.subtitledefaultvalue&lt;br /&gt;
	if subtext and (subtext ~= text) then&lt;br /&gt;
		text = text .. &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;#039; .. subtext .. &amp;#039;&amp;lt;/small&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local icon = params.icon or &amp;#039;&amp;#039;&lt;br /&gt;
	if icon ~= &amp;#039;&amp;#039; and icon ~= &amp;#039;defaut&amp;#039; then&lt;br /&gt;
		text = text .. mw.getCurrentFrame():extensionTag(&amp;#039;templatestyles&amp;#039;, &amp;#039;&amp;#039;, {src = &amp;#039;Infobox/Pictogramme/&amp;#039; .. mw.text.trim(icon) .. &amp;#039;.css&amp;#039;})&lt;br /&gt;
		if not params.large then&lt;br /&gt;
			icon = &amp;#039;icon &amp;#039; .. icon&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local classes = &amp;#039;entete &amp;#039; .. icon&lt;br /&gt;
&lt;br /&gt;
	local italic = params.italic and yesno(localdata[&amp;#039;titre en italique&amp;#039;] or &amp;#039;&amp;#039;, true, true)&lt;br /&gt;
	if italic then&lt;br /&gt;
		classes = classes .. &amp;#039; italique&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if params.setdisplaytitle and yesno(localdata[&amp;#039;titre article en italique&amp;#039;] or &amp;#039;&amp;#039;, true, true) then&lt;br /&gt;
		local formatTitleModule = require( &amp;#039;Module:Formatage du titre&amp;#039; )&lt;br /&gt;
		text = text .. formatTitleModule.setDisplayTitle{ args = {&lt;br /&gt;
			lang = lang,&lt;br /&gt;
			italic = italic,&lt;br /&gt;
			options = &amp;#039;noreplace&amp;#039;,&lt;br /&gt;
		} }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- overwrites with those provided in the module&lt;br /&gt;
	local style = {}&lt;br /&gt;
	style[&amp;#039;background-color&amp;#039;] = maincolor&lt;br /&gt;
	style[&amp;#039;color&amp;#039;] = thirdcolor&lt;br /&gt;
	if params.style then&lt;br /&gt;
		for i, j in pairs(params.style) do&lt;br /&gt;
			style[i] = j&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local title = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:addClass(classes)&lt;br /&gt;
		:css(style)&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:wikitext(text)&lt;br /&gt;
		:allDone()&lt;br /&gt;
	return title&lt;br /&gt;
end&lt;br /&gt;
p.buildTitle = p.buildtitle&lt;br /&gt;
&lt;br /&gt;
function p.buildnavigator(params)&lt;br /&gt;
&lt;br /&gt;
	-- définition du style&lt;br /&gt;
	local classes = &amp;quot;overflow infobox-navigateur &amp;quot; .. (params.class or &amp;#039;&amp;#039;)&lt;br /&gt;
	local style = params.style or {}&lt;br /&gt;
&lt;br /&gt;
	if params.separated then -- options pour ajouter une ligne de séparation au dessus&lt;br /&gt;
		classes = classes .. &amp;#039; bordered&amp;#039;&lt;br /&gt;
		style[&amp;#039;border-top&amp;#039;] = &amp;#039;1px solid&amp;#039; .. maincolor&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- ajustement des paramètres de données&lt;br /&gt;
	params.previousval = params.previousval or params.previousparameter -- nom de paramètre obsolète&lt;br /&gt;
	params.nextval = params.nextval or params.nextparameter&lt;br /&gt;
&lt;br /&gt;
	if params.previousproperty then&lt;br /&gt;
		params.previouswikidata = {property = params.previousproperty}&lt;br /&gt;
	end&lt;br /&gt;
	if params.nextproperty then&lt;br /&gt;
		params.nextwikidata = {property = params.nextproperty}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	local previousval = getValue(params.previousval, params) or getWikidataValue(params, &amp;#039;previouswikidata&amp;#039;)&lt;br /&gt;
	local nextval = getValue(params.nextval, params) or getWikidataValue(params, &amp;#039;nextwikidata&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    if previousval  == &amp;#039;-&amp;#039; then previousval  = nil end&lt;br /&gt;
    if nextval  == &amp;#039;-&amp;#039; then nextval  = nil end&lt;br /&gt;
&lt;br /&gt;
	local navigator&lt;br /&gt;
	if params.inner then -- pour celles qui sont à l&amp;#039;intérieur d&amp;#039;une table&lt;br /&gt;
		navigator = mw.html.create(&amp;#039;tr&amp;#039;):tag(&amp;#039;th&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 2)&lt;br /&gt;
		style[&amp;#039;font-weight&amp;#039;] = style[&amp;#039;font-weight&amp;#039;] or &amp;#039;normal&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		navigator = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if previousval or nextval then&lt;br /&gt;
		navigator&lt;br /&gt;
			:addClass(classes)&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;prev_bloc&amp;#039;)&lt;br /&gt;
				:wikitext(previousval)&lt;br /&gt;
				:done()&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;next_bloc&amp;#039;)&lt;br /&gt;
				:wikitext(nextval)&lt;br /&gt;
				:done()&lt;br /&gt;
			:allDone()&lt;br /&gt;
		return navigator&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
p.buildNavigator = p.buildnavigator&lt;br /&gt;
&lt;br /&gt;
function p.buildimages(params)&lt;br /&gt;
	local images = {}&lt;br /&gt;
	local upright, link, caption, alt, size  -- size is deprecated&lt;br /&gt;
	if type(params.imageparameters) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		params.imageparameters = {params.imageparameters}&lt;br /&gt;
	end&lt;br /&gt;
	if not params.imageparameters then -- s&amp;#039;il n&amp;#039;y a pas de paramètre image, continuer, peut-être y a-t-il une image par défaut définie dans le module d&amp;#039;infobox&lt;br /&gt;
		params.imageparameters = {}&lt;br /&gt;
	end&lt;br /&gt;
	for j, k in ipairs(params.imageparameters) do&lt;br /&gt;
		table.insert(images, localdata[k])&lt;br /&gt;
	end&lt;br /&gt;
	-- Images de Wikidata&lt;br /&gt;
	local iswikidataimage, iswikidatacaption = false&lt;br /&gt;
	if #images == 0 and localdata.item then&lt;br /&gt;
		if params.property then&lt;br /&gt;
			params.wikidata = {entity = localdata.item, property = params.property}&lt;br /&gt;
		end&lt;br /&gt;
		if params.wikidata then&lt;br /&gt;
			local wdq = params.wikidata&lt;br /&gt;
			wdq.excludespecial = true&lt;br /&gt;
			if type(wdq) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				wdq.entity = wdq.entity or localdata.item&lt;br /&gt;
				wdq.numval = wdq.numval or params.numval or 1&lt;br /&gt;
				images = wd.getClaims(wdq)&lt;br /&gt;
			end&lt;br /&gt;
			if type(wdq) == &amp;#039;function&amp;#039; then&lt;br /&gt;
				images = params.wikidata()&lt;br /&gt;
				if type(images) == &amp;#039;string&amp;#039; then&lt;br /&gt;
					return images&lt;br /&gt;
				end --c&amp;#039;est probablement une erreur dans la requête =&amp;gt; afficher le message&lt;br /&gt;
			end&lt;br /&gt;
			if (not images) then&lt;br /&gt;
				images = {}&lt;br /&gt;
			end&lt;br /&gt;
			if (#images &amp;gt; 0) and (params.wikidata.property) then&lt;br /&gt;
				maintenance = maintenance .. wd.addTrackingCat(params.wikidata.property)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if type(images[1]) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				for i, image in pairs(images) do&lt;br /&gt;
					if image.mainsnak.snaktype ~= &amp;#039;value&amp;#039; then&lt;br /&gt;
						return&lt;br /&gt;
					end&lt;br /&gt;
					if #images == 1 then -- si une seule image, on utilise la légende (si deux plusieurs images, comment mettre en forme ?)&lt;br /&gt;
						caption = wd.getFormattedQualifiers(images[i], {&amp;#039;P2096&amp;#039;}, {isinlang = wikiLang}) or wd.getFormattedQualifiers(images[i], {&amp;#039;P805&amp;#039;})&lt;br /&gt;
						iswikidatacaption = caption ~= nil&lt;br /&gt;
					end&lt;br /&gt;
					images[i] = image.mainsnak.datavalue.value&lt;br /&gt;
					iswikidataimage = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #images == 0 and getValue(params.captionparameter) ~= nil then&lt;br /&gt;
		addMaintenanceCat(&amp;quot;Infobox avec une légende locale sans image&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	-- Images par défaut&lt;br /&gt;
	if #images == 0 then&lt;br /&gt;
		if params.maintenancecat then&lt;br /&gt;
			addMaintenanceCat(params.maintenancecat, params.sortkey)&lt;br /&gt;
		end&lt;br /&gt;
		if params.defaultimages then&lt;br /&gt;
			images = params.defaultimages&lt;br /&gt;
			if type(images) == &amp;#039;string&amp;#039; then&lt;br /&gt;
				images = {images}&lt;br /&gt;
			end&lt;br /&gt;
			upright = params.defaultimageupright&lt;br /&gt;
			caption = params.defaultimagecaption&lt;br /&gt;
			link = params.defaultimagelink&lt;br /&gt;
			alt = params.defaultimagealt&lt;br /&gt;
			if not alt and ( images[1] == &amp;#039;Defaut.svg&amp;#039; or images[1] == &amp;#039;Defaut 2.svg&amp;#039; ) then&lt;br /&gt;
				alt = &amp;#039;une illustration sous licence libre serait bienvenue&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #images == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	upright = upright or getValue(params.uprightparameter) or params.defaultupright or &amp;quot;1.2&amp;quot;&lt;br /&gt;
	link = link or getValue(params.linkparameter) or params.defaultlink&lt;br /&gt;
	caption = caption or getValue(params.captionparameter) or params.defaultcaption&lt;br /&gt;
	alt = alt or getValue( params.altparameter) or params.defaultalt&lt;br /&gt;
&lt;br /&gt;
	if iswikidataimage and not iswikidatacaption and getValue(params.captionparameter) ~= nil then&lt;br /&gt;
		addMaintenanceCat(&amp;quot;Infobox avec une légende locale et une image sur Wikidata&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- taille avec &amp;quot;size&amp;quot; (obsolète)&lt;br /&gt;
	size = size or getValue(params.sizeparameter) or params.defaultsize -- deprecated&lt;br /&gt;
	if size then&lt;br /&gt;
		local sizevalue = size:gsub(&amp;#039;px$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
		local widthonly = mw.ustring.gsub(sizevalue, &amp;#039;x.*&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		widthonly = tonumber(widthonly)&lt;br /&gt;
		if type(widthonly) ~= &amp;#039;number&amp;#039; or widthonly &amp;gt; 280 then&lt;br /&gt;
			addMaintenanceCat(&amp;quot;Infobox avec une image trop grande&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if tonumber(sizevalue) then&lt;br /&gt;
			size = tostring( tonumber(sizevalue) / #images ) .. &amp;#039;px&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if tonumber(upright) then&lt;br /&gt;
		upright = tostring( tonumber(upright) / #images )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local style = params.style or {padding =&amp;#039;2px 0&amp;#039;,}&lt;br /&gt;
&lt;br /&gt;
	-- Partie image&lt;br /&gt;
&lt;br /&gt;
	local imagesString = &amp;#039;&amp;#039;&lt;br /&gt;
	for i,image in pairs(images) do&lt;br /&gt;
		if image == &amp;#039;-&amp;#039; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		imagesString = imagesString ..  &amp;#039;[[Fichier:&amp;#039; .. image .. &amp;#039;|frameless&amp;#039;&lt;br /&gt;
		if size then&lt;br /&gt;
			imagesString = imagesString .. &amp;#039;|&amp;#039; .. size -- not a mistake, parameter is unnamed&lt;br /&gt;
		end&lt;br /&gt;
		if alt then&lt;br /&gt;
			imagesString = imagesString .. &amp;#039;|alt=&amp;#039; .. alt&lt;br /&gt;
		end&lt;br /&gt;
		if link then&lt;br /&gt;
			imagesString = imagesString .. &amp;#039;|link=&amp;#039; .. link&lt;br /&gt;
		end&lt;br /&gt;
		if upright then&lt;br /&gt;
			imagesString = imagesString .. &amp;#039;|upright=&amp;#039; .. upright&lt;br /&gt;
		elseif #images &amp;gt; 1 and not size then&lt;br /&gt;
			imagesString = imagesString .. &amp;#039;|upright=&amp;#039; .. ( 1 / #images )&lt;br /&gt;
		end&lt;br /&gt;
		if image:sub(-4):lower() == &amp;#039;.svg&amp;#039; then&lt;br /&gt;
			imagesString = imagesString .. &amp;#039;|lang=&amp;#039; .. wikiLang&lt;br /&gt;
		end&lt;br /&gt;
		imagesString = imagesString .. &amp;#039;]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		if usedImages[image] then&lt;br /&gt;
			addMaintenanceCat(&amp;#039;Infobox avec plusieurs images identiques&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		usedImages[image] = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local image = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:addClass(&amp;quot;images&amp;quot;)&lt;br /&gt;
		:css(style)&lt;br /&gt;
		:wikitext(imagesString)&lt;br /&gt;
&lt;br /&gt;
	-- Partie légende&lt;br /&gt;
	local captionobj&lt;br /&gt;
	if caption then&lt;br /&gt;
		captionobj = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:wikitext(caption)&lt;br /&gt;
			:css(params.legendstyle or {})&lt;br /&gt;
			:addClass(&amp;quot;legend&amp;quot;)&lt;br /&gt;
			:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- séparateur&lt;br /&gt;
	local separator&lt;br /&gt;
	if params.separator then&lt;br /&gt;
		separator = p.separator(params)&lt;br /&gt;
	end&lt;br /&gt;
	return mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:node(image)&lt;br /&gt;
		:node(captionobj)&lt;br /&gt;
		:node(separator)&lt;br /&gt;
		:done()&lt;br /&gt;
end&lt;br /&gt;
p.buildImages = p.buildimages&lt;br /&gt;
&lt;br /&gt;
function p.buildtext(params)&lt;br /&gt;
	local classes = params.class or &amp;#039;&amp;#039;&lt;br /&gt;
	local style = {&lt;br /&gt;
		[&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039;,&lt;br /&gt;
		[&amp;#039;font-weight&amp;#039;] = &amp;#039;bold&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	if params.style then&lt;br /&gt;
		for i, j in pairs(params.style) do&lt;br /&gt;
			style[i] = j&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local text = getValue(params.value, params) or getWikidataValue(params) or params.defaultvalue&lt;br /&gt;
	if text == &amp;#039;-&amp;#039; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	if not text then&lt;br /&gt;
		if params.maintenancecat then&lt;br /&gt;
			addMaintenanceCat(params.maintenancecat, params.sortkey)&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- séparateur&lt;br /&gt;
	local separator&lt;br /&gt;
	if params.separator then&lt;br /&gt;
		separator = p.separator(params)&lt;br /&gt;
	end&lt;br /&gt;
	local formattedtext = mw.html.create(&amp;#039;p&amp;#039;)&lt;br /&gt;
		:addClass(classes)&lt;br /&gt;
		:css(style)&lt;br /&gt;
		:wikitext(text)&lt;br /&gt;
		:node(separator)&lt;br /&gt;
		:done()&lt;br /&gt;
	return formattedtext&lt;br /&gt;
end&lt;br /&gt;
p.buildText = p.buildtext&lt;br /&gt;
&lt;br /&gt;
function p.buildrow(params)&lt;br /&gt;
	local classes = params.class or &amp;#039;&amp;#039;&lt;br /&gt;
	local style = params.style or {}&lt;br /&gt;
	local valueClass = params.valueClass or &amp;#039;&amp;#039;&lt;br /&gt;
	local valueStyle = params.valueStyle or {}&lt;br /&gt;
	local value, gendernum = getValue(params.value, params)&lt;br /&gt;
	if(type(gendernum) == &amp;#039;number&amp;#039;) then&lt;br /&gt;
		if(gendernum &amp;gt; 1) then&lt;br /&gt;
			gendernum = &amp;#039;p&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			gendernum = &amp;#039;s&amp;#039;&lt;br /&gt;
		end &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(params.wikidata) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		params.wikidata.wikidatalang = localdata.wikidatalang&lt;br /&gt;
		if (value == valueexpl) then&lt;br /&gt;
			value = nil&lt;br /&gt;
			params.wikidata.expl = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if (not value) then&lt;br /&gt;
		value, gendernum = getWikidataValue(params, &amp;#039;wikidata&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not value then&lt;br /&gt;
		value = params.defaultvalue&lt;br /&gt;
	end&lt;br /&gt;
	if value == &amp;#039;-&amp;#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if not gendernum then&lt;br /&gt;
		gendernum = &amp;#039;s&amp;#039; --singulier indéfini&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not value then&lt;br /&gt;
		if params.maintenancecat then&lt;br /&gt;
			addMaintenanceCat(params.maintenancecat, params.sortkey)&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local label = params.label&lt;br /&gt;
	if type(label) == &amp;#039;string&amp;#039; then label = {default = label} end&lt;br /&gt;
	&lt;br /&gt;
	if type(label) == &amp;#039;table&amp;#039; then -- Accord en genre et en nombre&lt;br /&gt;
		local onlynum = {default = &amp;#039;default&amp;#039;, s = &amp;#039;s&amp;#039;, ms = &amp;#039;s&amp;#039;, fs = &amp;#039;s&amp;#039;, p = &amp;#039;p&amp;#039;, mp = &amp;#039;p&amp;#039;, fp = &amp;#039;p&amp;#039;, mixtep = &amp;#039;p&amp;#039;} -- Accord seulement en nombre par défaut&lt;br /&gt;
		&lt;br /&gt;
		label[&amp;#039;s&amp;#039;] = label[&amp;#039;s&amp;#039;] or params.singularlabel or label[&amp;#039;default&amp;#039;] or label[&amp;#039;ms&amp;#039;]&lt;br /&gt;
		label[&amp;#039;p&amp;#039;] = label[&amp;#039;p&amp;#039;] or params.plurallabel or label[&amp;#039;mp&amp;#039;]&lt;br /&gt;
		&lt;br /&gt;
		label = label[gendernum] or label[onlynum[gendernum]] or label.default&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(label) == &amp;#039;function&amp;#039; then&lt;br /&gt;
			label = label(localdata, localdata.item)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- format&lt;br /&gt;
	local formattedvalue = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:wikitext(&amp;#039;\n&amp;#039; .. value) -- Le &amp;#039;\n&amp;#039; est requis lorsque value est une liste commençant par &amp;#039;*&amp;#039; ou &amp;#039;#&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if (params.hidden == true)then&lt;br /&gt;
		formattedvalue&lt;br /&gt;
			:attr({class=&amp;quot;NavContent&amp;quot;, style=&amp;quot;display: none; text-align: left;&amp;quot;})&lt;br /&gt;
		formattedvalue = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:attr({class=&amp;quot;NavFrame&amp;quot;, title=&amp;quot;[Afficher]/[Masquer]&amp;quot;, style=&amp;quot;border: none; padding: 0;&amp;quot;})&lt;br /&gt;
			:node(formattedvalue)&lt;br /&gt;
	end&lt;br /&gt;
	formattedvalue = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:node(formattedvalue)&lt;br /&gt;
			:addClass(valueClass)&lt;br /&gt;
			:css(valueStyle)&lt;br /&gt;
			:allDone()&lt;br /&gt;
&lt;br /&gt;
	local formattedlabel&lt;br /&gt;
	if label then&lt;br /&gt;
		formattedlabel = mw.html.create(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
			:wikitext(label)&lt;br /&gt;
			:done()&lt;br /&gt;
	end&lt;br /&gt;
	local row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:addClass(classes)&lt;br /&gt;
		:css(style)&lt;br /&gt;
		:node(formattedlabel)&lt;br /&gt;
		:node(formattedvalue)&lt;br /&gt;
		:done()&lt;br /&gt;
&lt;br /&gt;
	return row&lt;br /&gt;
end&lt;br /&gt;
p.buildRow = p.buildrow&lt;br /&gt;
&lt;br /&gt;
function p.buildsuccession(params)&lt;br /&gt;
	if not params.value then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--local style = params.style or {}&lt;br /&gt;
	--style[&amp;#039;text-align&amp;#039;] = style[&amp;#039;text-align&amp;#039;] or &amp;#039;center&amp;#039;&lt;br /&gt;
	--style[&amp;#039;color&amp;#039;] = style[&amp;#039;color&amp;#039;] or &amp;#039;#000000&amp;#039;&lt;br /&gt;
	--style[&amp;#039;background-color&amp;#039;] = style[&amp;#039;background-color&amp;#039;] or &amp;#039;#F9F9F9&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local rowI = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local styleI = {}&lt;br /&gt;
	local colspan = &amp;#039;2&amp;#039;&lt;br /&gt;
	styleI[&amp;#039;padding&amp;#039;] = &amp;#039;1px&amp;#039;&lt;br /&gt;
	local cellI = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({colspan = colspan})&lt;br /&gt;
			:attr({align = &amp;#039;center&amp;#039;})&lt;br /&gt;
			:css(styleI)&lt;br /&gt;
&lt;br /&gt;
	local styleT = {}&lt;br /&gt;
	styleT[&amp;#039;margin&amp;#039;] = &amp;#039;0px&amp;#039;&lt;br /&gt;
	styleT[&amp;#039;background-color&amp;#039;] = &amp;#039;transparent&amp;#039;&lt;br /&gt;
	styleT[&amp;#039;width&amp;#039;] = &amp;#039;100%&amp;#039;&lt;br /&gt;
	local tabC = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
			:attr({cellspacing = &amp;#039;0&amp;#039;})&lt;br /&gt;
			:addClass(&amp;#039;navigation-not-searchable&amp;#039;)&lt;br /&gt;
			:css(styleT)&lt;br /&gt;
&lt;br /&gt;
	local row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local color = params.color&lt;br /&gt;
&lt;br /&gt;
	local style = {}&lt;br /&gt;
	local arrowLeft = &amp;#039;[[Fichier:Arrleft.svg|13px|alt=Précédent|link=]]&amp;#039;&lt;br /&gt;
	local arrowRight = &amp;#039;[[Fichier:Arrright.svg|13px|alt=Suivant|link=]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if color ~= &amp;#039;default&amp;#039; then&lt;br /&gt;
		style[&amp;#039;background-color&amp;#039;] = color&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local styleTrans = {}&lt;br /&gt;
&lt;br /&gt;
	local values = params.value&lt;br /&gt;
	local before = values[&amp;#039;before&amp;#039;]&lt;br /&gt;
	local center = values[&amp;#039;center&amp;#039;]&lt;br /&gt;
	local after = values[&amp;#039;after&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
	local widthCenter&lt;br /&gt;
	local widthCell = &amp;#039;44%&amp;#039;&lt;br /&gt;
	if center then&lt;br /&gt;
		widthCenter = &amp;#039;28%&amp;#039;&lt;br /&gt;
		widthCell = &amp;#039;29%&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local formattedbefore&lt;br /&gt;
	if before then&lt;br /&gt;
		formattedbefore = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({align = &amp;#039;left&amp;#039;})&lt;br /&gt;
			:attr({width = &amp;#039;5%&amp;#039;})&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:wikitext(arrowLeft)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedbefore)&lt;br /&gt;
		formattedbefore = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({width = &amp;#039;1%&amp;#039;})&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedbefore)&lt;br /&gt;
		formattedbefore = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({align = &amp;#039;left&amp;#039;})&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({width = widthCell})&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:wikitext(before)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedbefore)&lt;br /&gt;
	else&lt;br /&gt;
		formattedbefore = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({align = &amp;#039;left&amp;#039;})&lt;br /&gt;
			:attr({width = &amp;#039;5%&amp;#039;})&lt;br /&gt;
			:css(styleTrans)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedbefore)&lt;br /&gt;
		formattedbefore = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({width = &amp;#039;1%&amp;#039;})&lt;br /&gt;
			:css(styleTrans)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedbefore)&lt;br /&gt;
		formattedbefore = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({align = &amp;#039;left&amp;#039;})&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({width = widthCell})&lt;br /&gt;
			:css(styleTrans)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedbefore)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local formattedcenter&lt;br /&gt;
	formattedcenter = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
		:attr({width = &amp;#039;1%&amp;#039;})&lt;br /&gt;
		:css(styleTrans)&lt;br /&gt;
		:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
		:done()&lt;br /&gt;
	row:node(formattedcenter)&lt;br /&gt;
&lt;br /&gt;
	if center then&lt;br /&gt;
		formattedcenter = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({align = &amp;#039;center&amp;#039;})&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({width = widthCenter})&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:wikitext(center)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedcenter)&lt;br /&gt;
		formattedcenter = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({width = &amp;#039;1%&amp;#039;})&lt;br /&gt;
			:css(styleTrans)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedcenter)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local formattedafter&lt;br /&gt;
	if after then&lt;br /&gt;
		formattedafter = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({align = &amp;#039;right&amp;#039;})&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({width = widthCell})&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:wikitext(after)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedafter)&lt;br /&gt;
		formattedbefore = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({width = &amp;#039;1%&amp;#039;})&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedbefore)&lt;br /&gt;
		formattedafter = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({align = &amp;#039;right&amp;#039;})&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({width = &amp;#039;5%&amp;#039;})&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:wikitext(arrowRight)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedafter)&lt;br /&gt;
	else&lt;br /&gt;
		formattedafter = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({align = &amp;#039;right&amp;#039;})&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({width = widthCell})&lt;br /&gt;
			:css(styleTrans)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedafter)&lt;br /&gt;
		formattedbefore = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({width = &amp;#039;1%&amp;#039;})&lt;br /&gt;
			:css(styleTrans)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedbefore)&lt;br /&gt;
		formattedafter = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:attr({align = &amp;#039;right&amp;#039;})&lt;br /&gt;
			:attr({valign = &amp;#039;middle&amp;#039;})&lt;br /&gt;
			:attr({width = &amp;#039;5%&amp;#039;})&lt;br /&gt;
			:css(styleTrans)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		row:node(formattedafter)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	row:done()&lt;br /&gt;
	tabC:node(row)&lt;br /&gt;
	tabC:done()&lt;br /&gt;
	cellI:node(tabC)&lt;br /&gt;
	cellI:done()&lt;br /&gt;
	rowI:node(cellI)&lt;br /&gt;
	rowI:allDone()&lt;br /&gt;
&lt;br /&gt;
	return rowI&lt;br /&gt;
end&lt;br /&gt;
p.buildSuccession = p.buildsuccession&lt;br /&gt;
&lt;br /&gt;
function p.buildrow1col(params)&lt;br /&gt;
&lt;br /&gt;
	if not params.value then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--local style = params.style or {}&lt;br /&gt;
	--style[&amp;#039;text-align&amp;#039;] = style[&amp;#039;text-align&amp;#039;] or &amp;#039;center&amp;#039;&lt;br /&gt;
	--style[&amp;#039;color&amp;#039;] = style[&amp;#039;color&amp;#039;] or &amp;#039;#000000&amp;#039;&lt;br /&gt;
	--style[&amp;#039;background-color&amp;#039;] = style[&amp;#039;background-color&amp;#039;] or &amp;#039;#F9F9F9&amp;#039;&lt;br /&gt;
	local classes = params.class&lt;br /&gt;
	local rowcolor&lt;br /&gt;
	if params.color == &amp;#039;secondcolor&amp;#039; then&lt;br /&gt;
		rowcolor = secondcolor&lt;br /&gt;
	else&lt;br /&gt;
		rowcolor = params.color&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local style = {}&lt;br /&gt;
	style[&amp;#039;padding&amp;#039;] = &amp;#039;4px&amp;#039;&lt;br /&gt;
	style[&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039;&lt;br /&gt;
	style[&amp;#039;background-color&amp;#039;] = rowcolor or &amp;#039;#F9F9F9&amp;#039;&lt;br /&gt;
	style[&amp;#039;color&amp;#039;] = &amp;#039;#000000&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local text = params.value&lt;br /&gt;
&lt;br /&gt;
	local colspan =&amp;#039;2&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local formattedlabel&lt;br /&gt;
	formattedlabel = mw.html.create(&amp;#039;th&amp;#039;)&lt;br /&gt;
		:attr({colspan = colspan})&lt;br /&gt;
		:css(style)&lt;br /&gt;
		:wikitext(text)&lt;br /&gt;
		:done()&lt;br /&gt;
&lt;br /&gt;
	local row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:addClass(classes)&lt;br /&gt;
		:css(style)&lt;br /&gt;
		:node(formattedlabel)&lt;br /&gt;
		:done()&lt;br /&gt;
&lt;br /&gt;
	return row&lt;br /&gt;
end&lt;br /&gt;
p.buildRow1Col = p.buildrow1col&lt;br /&gt;
&lt;br /&gt;
function p.buildtable(params)&lt;br /&gt;
	local tab = mw.html.create(&amp;#039;table&amp;#039;):css(params.style or {})&lt;br /&gt;
&lt;br /&gt;
	local rows = params.rows&lt;br /&gt;
&lt;br /&gt;
	-- expand parameters so that we have a list of tables&lt;br /&gt;
	local i = 1&lt;br /&gt;
&lt;br /&gt;
	while (i &amp;lt;= #rows) do&lt;br /&gt;
		local l = rows[i]&lt;br /&gt;
		if type(l) == &amp;#039;function&amp;#039; then&lt;br /&gt;
			l = l(localdata, localdata.item)&lt;br /&gt;
		end&lt;br /&gt;
		if (type(l) == &amp;#039;table&amp;#039;) and (l.type == &amp;#039;multi&amp;#039;) then&lt;br /&gt;
			table.remove(rows, i)&lt;br /&gt;
			for j, row in ipairs(l.rows) do&lt;br /&gt;
				table.insert(rows, i + j - 1, row)&lt;br /&gt;
			end&lt;br /&gt;
		elseif type(l) == &amp;#039;nil&amp;#039; then&lt;br /&gt;
			table.remove(rows, i)&lt;br /&gt;
		elseif type(l) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
			return error(&amp;#039;les lignes d\&amp;#039;infobox (&amp;quot;rows&amp;quot;) doivent être des tables, est &amp;#039; .. type(l))&lt;br /&gt;
		else&lt;br /&gt;
			i = i + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- CREATE ROW&lt;br /&gt;
	local expandedrows = {}&lt;br /&gt;
	for k, row in ipairs(rows) do&lt;br /&gt;
		local v = p.buildblock(row)&lt;br /&gt;
		if v then&lt;br /&gt;
			table.insert(expandedrows, v)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if (#expandedrows == 0) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	rows = expandedrows&lt;br /&gt;
&lt;br /&gt;
	-- ADD TITLE&lt;br /&gt;
	local title&lt;br /&gt;
	if params.title or params.singulartitle or params.pluraltitle then&lt;br /&gt;
		local text&lt;br /&gt;
		if #rows &amp;gt; 1 and params.pluraltitle then&lt;br /&gt;
			text = params.pluraltitle&lt;br /&gt;
		elseif #rows == 1 and params.singulartitle then&lt;br /&gt;
			text = params.singulartitle&lt;br /&gt;
		else&lt;br /&gt;
			text = params.title&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local style = params.titlestyle or {}&lt;br /&gt;
		style[&amp;#039;text-align&amp;#039;] = style[&amp;#039;text-align&amp;#039;] or &amp;#039;center&amp;#039;&lt;br /&gt;
		style[&amp;#039;color&amp;#039;] = style[&amp;#039;color&amp;#039;] or thirdcolor&lt;br /&gt;
		style[&amp;#039;background-color&amp;#039;] = style[&amp;#039;background-color&amp;#039;] or maincolor&lt;br /&gt;
&lt;br /&gt;
		local colspan =&amp;#039;2&amp;#039;&lt;br /&gt;
		title = mw.html.create(&amp;#039;caption&amp;#039;)&lt;br /&gt;
			:attr({colspan = colspan})&lt;br /&gt;
			:css(style)&lt;br /&gt;
			:wikitext(text)&lt;br /&gt;
			:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if title then&lt;br /&gt;
		tab:node(title)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i, j in pairs (rows) do&lt;br /&gt;
		tab:node(j)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if params.separator then&lt;br /&gt;
		local separator = p.separator(params)&lt;br /&gt;
		tab:node(separator)&lt;br /&gt;
	end&lt;br /&gt;
	tab:allDone()&lt;br /&gt;
	return tab&lt;br /&gt;
end&lt;br /&gt;
p.buildTable = p.buildtable&lt;br /&gt;
&lt;br /&gt;
function p.buildinvalidblock(args)&lt;br /&gt;
	addMaintenanceCat(i18n[&amp;#039;default cat&amp;#039;])&lt;br /&gt;
	local text = &amp;#039;&amp;#039;&lt;br /&gt;
	if type(args) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		text = &amp;quot;Les blocs d&amp;#039;infobox doivent être des tables&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		text = i18n[&amp;quot;invalid block type&amp;quot;] .. &amp;#039; : &amp;#039; .. (args.type or &amp;#039;??&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
p.buildInvalidBlock = p.buildinvalidblock&lt;br /&gt;
&lt;br /&gt;
function p.buildmap(params)&lt;br /&gt;
&lt;br /&gt;
	-- paramètre d&amp;#039;affichage&lt;br /&gt;
	local maplist = getValue(params.maps)&lt;br /&gt;
	local pointtype = params.pointtype&lt;br /&gt;
	local maptype = params.maptype -- choisit le type de carte le plus approprié (relief, administratif, etc.)&lt;br /&gt;
	if type(maplist) == &amp;#039;function&amp;#039; then&lt;br /&gt;
		maplist = maplist(localdata, localdata.item)&lt;br /&gt;
	end&lt;br /&gt;
	local width = tonumber(params.width) or 280&lt;br /&gt;
	if width &amp;gt; 280 then&lt;br /&gt;
		addMaintenanceCat(&amp;quot;Infobox avec une image trop grande&amp;quot;)&lt;br /&gt;
		return &amp;#039;image trop grande, la largeur doit être inférieure ou égale à 280px&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- récupération des données locales&lt;br /&gt;
	local pointtable = {}&lt;br /&gt;
	local globe = params.globe&lt;br /&gt;
	if params.latitude then&lt;br /&gt;
		local lat, long&lt;br /&gt;
		if type(params.latitude) == &amp;#039;function&amp;#039; then&lt;br /&gt;
			lat, long = params.latitude(localdata, localdata.item), params.longitude(localdata, localdata.item)&lt;br /&gt;
		else&lt;br /&gt;
			lat, long = localdata[params.latitude], localdata[params.longitude]&lt;br /&gt;
		end&lt;br /&gt;
		if lat then&lt;br /&gt;
			table.insert(pointtable, {latitude = lat, longitude = long})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- récupération des données wikidata&lt;br /&gt;
	local function processWDval(claim, displayformat)&lt;br /&gt;
		if not claim then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		local val = wd.formatSnak( claim.mainsnak )&lt;br /&gt;
		return {latitude = val.latitude, longitude = val.longitude, globe = val.globe, marker = displayformat.marker}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getWDvals(query)&lt;br /&gt;
		query.excludespecial = true&lt;br /&gt;
		query.numval = query.numval or 1&lt;br /&gt;
		query.entity = query.entity or localdata.item&lt;br /&gt;
		local claims = wd.getClaims(query)&lt;br /&gt;
		if (not claims) then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		for i, claim in ipairs(claims) do&lt;br /&gt;
			claim = processWDval(claim, query)&lt;br /&gt;
			table.insert(pointtable, claim)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (#pointtable == 0) and localdata.item and params.wikidata and (params.wikidata ~= &amp;#039;-&amp;#039;) then&lt;br /&gt;
		for i, query in ipairs(params.wikidata) do&lt;br /&gt;
			if type(query) == &amp;#039;function&amp;#039; then&lt;br /&gt;
				query = query()&lt;br /&gt;
			end&lt;br /&gt;
			if query then&lt;br /&gt;
				getWDvals(query)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (not pointtable) or (#pointtable == 0) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local newparams = {maplist = maplist, pointtype = pointtype, maptype = maptype, width = width, item = localdata.item, pointtable = pointtable, globe = globe, marker=params.marker, default_zoom=params.default_zoom, ids = params.ids, markercolor = params.markercolor, shapecolor = params.shapecolor }&lt;br /&gt;
	if params.params and type(params.params) == &amp;#039;table&amp;#039; then -- paramètres additionnels&lt;br /&gt;
		for i, j in pairs(params.params) do&lt;br /&gt;
			newparams[i] = j&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return require(&amp;#039;Module:Carte&amp;#039;).multimap(newparams)&lt;br /&gt;
end&lt;br /&gt;
p.buildMap = p.buildmap&lt;br /&gt;
&lt;br /&gt;
function p.buildexternaltext(params)&lt;br /&gt;
	local value = getValue(params.value)&lt;br /&gt;
	if value and (type(value) == &amp;#039;string&amp;#039;) then&lt;br /&gt;
		externaltext = externaltext .. value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
p.buildExternalText = p.buildexternaltext&lt;br /&gt;
&lt;br /&gt;
function p.buildfooter(params)&lt;br /&gt;
	if not params then&lt;br /&gt;
		params = {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local classes = &amp;#039;navbar noprint bordered navigation-not-searchable &amp;#039; .. (params.class or &amp;#039;&amp;#039;)&lt;br /&gt;
	local style = params.style or {}&lt;br /&gt;
	style[&amp;#039;border-top&amp;#039;] = style[&amp;#039;border-top&amp;#039;] or &amp;#039;1px solid &amp;#039; .. maincolor&lt;br /&gt;
&lt;br /&gt;
	local backlinkstr = &amp;#039;[&amp;#039; .. tostring( mw.uri.fullUrl( page.prefixedText, &amp;#039;veaction=edit&amp;amp;section=0&amp;#039; ) ) .. &amp;#039; &amp;#039; .. i18n[&amp;#039;edit&amp;#039;] .. &amp;#039;]&amp;#039;&lt;br /&gt;
		.. &amp;#039; - [&amp;#039; .. tostring( mw.uri.fullUrl( page.prefixedText, &amp;#039;action=edit&amp;amp;section=0&amp;#039; ) ) .. &amp;#039; &amp;#039; .. i18n[&amp;#039;edit code&amp;#039;] .. &amp;#039;]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local itemlinkstr&lt;br /&gt;
	if localdata.item and localdata.item ~= &amp;#039;-&amp;#039; then&lt;br /&gt;
		itemlinkstr = &amp;#039;[[d:&amp;#039; .. localdata.item .. &amp;#039;|&amp;#039; .. i18n[&amp;#039;edit item&amp;#039;] .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local editstr = backlinkstr&lt;br /&gt;
	if itemlinkstr then&lt;br /&gt;
		editstr = editstr .. &amp;#039; - &amp;#039; .. itemlinkstr&lt;br /&gt;
	end&lt;br /&gt;
	local editlinkspan = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
		:css({[&amp;#039;text-align&amp;#039;] = &amp;quot;left&amp;quot;})&lt;br /&gt;
		:addClass(&amp;#039;plainlinks&amp;#039;)&lt;br /&gt;
		:wikitext(editstr)&lt;br /&gt;
		:done()&lt;br /&gt;
	local doclinkstr = &amp;#039;[[Fichier:Info Simple.svg|12px|link=&amp;#039; .. localdata.templatename .. &amp;#039;|&amp;#039; .. i18n[&amp;#039;see doc&amp;#039;] .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	-- si ce lien ne marche pas toujours, il faut ajouter un variable pour le nom de l&amp;#039;infobox récupéré par le frame&lt;br /&gt;
	local doclinkspan = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
		:css({[&amp;#039;text-align&amp;#039;] = &amp;quot;right&amp;quot;})&lt;br /&gt;
		:wikitext(doclinkstr)&lt;br /&gt;
		:done()&lt;br /&gt;
&lt;br /&gt;
	local footer = mw.html.create(&amp;#039;p&amp;#039;)&lt;br /&gt;
		:addClass(classes)&lt;br /&gt;
		:css(style)&lt;br /&gt;
		:node(editlinkspan)&lt;br /&gt;
		:node(doclinkspan)&lt;br /&gt;
	return footer&lt;br /&gt;
end&lt;br /&gt;
p.buildFooter = p.buildfooter&lt;br /&gt;
&lt;br /&gt;
function p.buildblock(block)&lt;br /&gt;
	if type(block) == &amp;#039;function&amp;#039; then&lt;br /&gt;
		block = block( localdata )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local blocktypes = { -- list of functions for block buildings&lt;br /&gt;
		[&amp;#039;invalid&amp;#039;] = p.buildinvalidblock,&lt;br /&gt;
		[&amp;#039;external text&amp;#039;] = p.buildexternaltext,&lt;br /&gt;
		[&amp;#039;footer&amp;#039;] = p.buildfooter,&lt;br /&gt;
		[&amp;#039;images&amp;#039;] = p.buildimages,&lt;br /&gt;
		[&amp;#039;map&amp;#039;]= p.buildmap,&lt;br /&gt;
		[&amp;#039;mixed&amp;#039;] = p.buildrow,&lt;br /&gt;
		[&amp;#039;navigator&amp;#039;] = p.buildnavigator,&lt;br /&gt;
		[&amp;#039;table&amp;#039;] = p.buildtable,&lt;br /&gt;
		[&amp;#039;row&amp;#039;] = p.buildrow,&lt;br /&gt;
		[&amp;#039;row1col&amp;#039;] = p.buildrow1col,&lt;br /&gt;
		[&amp;#039;succession&amp;#039;] = p.buildsuccession,&lt;br /&gt;
		[&amp;#039;text&amp;#039;] = p.buildtext,&lt;br /&gt;
		[&amp;#039;title&amp;#039;] = p.buildtitle,&lt;br /&gt;
	}&lt;br /&gt;
	if type(block) ~= &amp;#039;table&amp;#039; or (not block.type) or (not blocktypes[block.type]) then&lt;br /&gt;
		return blocktypes[&amp;#039;invalid&amp;#039;](block)&lt;br /&gt;
	end&lt;br /&gt;
	return blocktypes[block.type](block)&lt;br /&gt;
end&lt;br /&gt;
p.buildBlock = p.buildblock&lt;br /&gt;
&lt;br /&gt;
function p.build()&lt;br /&gt;
&lt;br /&gt;
	localdata = require( &amp;#039;Module:Infobox/Localdata&amp;#039; )&lt;br /&gt;
	if type( localdata.item ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		localdata.item = localdata.item.id&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- assign rank to the infobox, &amp;quot;secondary&amp;quot; means special formatting like no displaytitle for coordinates&lt;br /&gt;
	local infoboxrank = &amp;#039;main&amp;#039; -- main infobox of the page, with coordinates displayed in title etc.&lt;br /&gt;
	if page.namespace ~= 0 then&lt;br /&gt;
		infoboxrank = &amp;#039;secondary&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- if infobox is linked to another item: rank = secondary&lt;br /&gt;
	if localdata.item then&lt;br /&gt;
		local itemlink = mw.wikibase.sitelink(localdata.item)&lt;br /&gt;
		local pagetitle = page.prefixedText&lt;br /&gt;
		if (itemlink or &amp;#039;&amp;#039;) ~= pagetitle then&lt;br /&gt;
			infoboxrank = &amp;#039;secondary&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	localdata.infoboxrank = infoboxrank&lt;br /&gt;
&lt;br /&gt;
	-- load infobox module page&lt;br /&gt;
	local moduledata = require(&amp;#039;Module:Infobox/&amp;#039; .. localdata.modulename)&lt;br /&gt;
	moduledata.name = localdata.modulename&lt;br /&gt;
	&lt;br /&gt;
	-- maintenance categories given by the module page&lt;br /&gt;
	if moduledata.categories then&lt;br /&gt;
		for i, j in pairs(moduledata.categories) do&lt;br /&gt;
			if (type(j) == &amp;#039;string&amp;#039;) then addMaintenanceCat(j) end&lt;br /&gt;
			if (type(j) == &amp;#039;table&amp;#039;) then addMaintenanceCat(j[1],j[2]) end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- defines main color&lt;br /&gt;
	maincolor = localdata[&amp;#039;couleur infobox&amp;#039;] or localdata[&amp;#039;couleur boîte&amp;#039;] or moduledata.maincolor or maincolor&lt;br /&gt;
	secondcolor = moduledata.secondcolor or secondcolor&lt;br /&gt;
	thirdcolor = localdata[&amp;#039;texte noir&amp;#039;] or localdata[&amp;#039;couleur texte&amp;#039;] or moduledata.thirdcolor or thirdcolor&lt;br /&gt;
	if ( #maincolor == 6 or #maincolor == 3 ) and maincolor:match( &amp;#039;^%x+$&amp;#039; ) then&lt;br /&gt;
		maincolor = &amp;#039;#&amp;#039; .. maincolor&lt;br /&gt;
	end&lt;br /&gt;
	if thirdcolor == &amp;#039;oui&amp;#039; or thirdcolor == &amp;#039;true&amp;#039; then&lt;br /&gt;
		thirdcolor = &amp;#039;#000&amp;#039;&lt;br /&gt;
	elseif thirdcolor == &amp;#039;non&amp;#039; or thirdcolor == &amp;#039;false&amp;#039; then&lt;br /&gt;
		thirdcolor = &amp;#039;#fff&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- classes&lt;br /&gt;
	local classes = mw.getCurrentFrame():expandTemplate{ title = &amp;#039;Classes début infobox&amp;#039;, args = { version = &amp;#039;3&amp;#039; } }&lt;br /&gt;
	classes = classes .. &amp;#039; large &amp;#039; .. (moduledata.class or &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- style&lt;br /&gt;
	local style = moduledata.style or {}&lt;br /&gt;
&lt;br /&gt;
	-- build infobox&lt;br /&gt;
	infobox	:addClass(classes)&lt;br /&gt;
			:css(style)&lt;br /&gt;
	for i, j in pairs( moduledata.parts ) do&lt;br /&gt;
		infobox:node( p.buildblock(j) )&lt;br /&gt;
	end&lt;br /&gt;
	infobox	:node(p.buildfooter(moduledata.footer))&lt;br /&gt;
			:done()&lt;br /&gt;
&lt;br /&gt;
	return tostring(infobox) .. externaltext, maintenance&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wikipedia&gt;GrandEscogriffe</name></author>
	</entry>
</feed>