Questo è il modulo di prova di dega180.


local p = {}
local args = {} -- Parametri passati al template {{Divisione Amministrativa}}
local HtmlBuilder = require('Modulo:HtmlBuilder')
local lang = mw.language.new('it')
local function controllaGradoAmministrativo(frame)
	if not args['Grado amministrativo'] then
		return {true, frame:expandTemplate{title = 'Errore template', args = {'Grado amministrativo', 'Divisioni amministrative', man = 'Template:Divisione amministrativa/man'} } }
	elseif tonumber(args['Grado amministrativo']) == nil then
		return {true, frame:expandTemplate{title = 'Errore template', args = {'Grado amministrativo', 'Divisioni amministrative', man = 'Template:Divisione amministrativa/man', t = 'r'} } }
	end
	return {false, nil}
end

local function stileTitoloInt()
	local gradoAmministrativo = tonumber(args['Grado amministrativo'])
	if gradoAmministrativo == 1 then
		return 'background-color:#C2FF91;'
	elseif gradoAmministrativo == 2 then
		return 'background-color:#C1FFD5;'
	elseif gradoAmministrativo == 3 then
		return 'background-color:#CEDEFF;'
	elseif gradoAmministrativo == 4 then
		return 'background-color:#E1E2FF;'
	elseif gradoAmministrativo == 5 then
		return 'background-color:#E1E1E1;'
	end
	return nil
end

local function titoloInt(frame)
	local output = HtmlBuilder.create() -- Conterrà la stringa di output
	local tipoDivisione = frame:expandTemplate{title='DivAmm', args = {args['Stato'], args['Grado amministrativo']} }
	local linkTipoDivisione = frame:expandTemplate{title='DivAmm', args = {args['Stato'], args['Grado amministrativo']..'L'} }
	local tipo
	if (tipoDivisione ~= '') or args['Tipo'] then
		if args['Tipo'] then
			tipo = args['Tipo']
		else
			if linkTipoDivisione ~= '' then
				tipo='[['..linkTipoDivisione..'|'..lang:lc(tipoDivisione)..']]'
			else
				tipo=lang:lc(tipoDivisione)
			end
			if args['Data soppressione'] then
				tipo=table.concat({'ex ',tipo})
			end
		end
		return tostring(output.wikitext(args['Nome']).tag('br /', {unclosed = true}).tag('span').css('font-size','80%').wikitext(tipo).allDone())
	end
	return args['Nome']
end

local function immagine(frame)
	local root = HtmlBuilder.create()
	local tabella, riga, cella
	if args['Nome ufficiale'] then
		root.wikitext(args['Nome ufficiale'])
		if args['Stemma'] or args['Bandiera'] or args['Panorama'] then
			root.tag('br /', {unclosed = true})
		end
	end
	tabella = root.tag('center').tag('table').css('text-align', 'center')
	riga = tabella.tag('tr')
	if args['Stemma'] then
		cella = riga.tag('td').css('vertical-align', 'middle')
		cella.wikitext('[[File:'..args['Stemma']..'|80x125px|'..args['Nome']..' – Stemma]]').done()
	end
	if args['Bandiera'] then
		cella = riga.tag('td').css('vertical-align', 'middle')
		cella.wikitext('[[File:'..args['Bandiera']..'|125x125px')
		if args['Bordo bandiera'] ~= 'no' then
			cella.wikitext('|border')
		end
		cella.wikitext('|'..args['Nome']..' – Bandiera]]').done()
	end
	riga.done()
	riga = tabella.tag('tr')
	if args['Stemma'] and args['Voce stemma'] then
		cella = riga.tag('td').css('vertical-align', 'middle')
		cella.wikitext('([['..args['Voce stemma']..'|dettagli]])').done()
	end
	if args['Bandiera'] and args['Voce bandiera'] then
		if args['Bandiera'] and (not args['Voce bandiera']) then
			cella = riga.tag('td')
			cella.done()
			cella = riga.tag('td').css('vertical-align', 'middle')
			cella.wikitext('([['..args['Voce bandiera']..'|dettagli]])').done()
		else
			cella = riga.tag('td')
			cella.wikitext('([['..args['Voce bandiera']..'|dettagli]])').done()
		end
	end
	root.allDone()
	if args['Panorama'] then
		root.wikitext('[[File:'..args['Panorama']..'|')
		if args['Didascalia'] then
			root.wikitext(args['Didascalia'])
		else
			root.wikitext(args['Nome']..' – Veduta')
		end
		root.wikitext('|260x250px]]')
	end
	return tostring(root)
end

local function valore2(frame)
	if not args['Stato'] then
		return frame:expandTemplate{title='Errore template', args={'Stato', 'Divisioni amministrative', man = 'Template:Divisione amministrativa/man'} }
	end
	if not mw.title.new(args['Stato'], 'Template').exists then
		return frame:expandTemplate{title='Errore template', args={'Stato', 'Divisioni amministrative',t = 'r', man = 'Template:Divisione amministrativa/man'} }
	end
	local output = frame:expandTemplate{title='Band dip', args={args['Stato']} }
	if not args['Stato'] == frame:expandTemplate{title='Da CIO a ISO', args{args['Stato']} } then
		output = output..'[[Categoria:Divisioni amministrative con Stato non riconosciuto]]'
	end
	if args['Note stato'] then
		output = output..args['Note stato']
	end
	return output
end


function p.divisioneAmministrativa( frame )
	local argsInfobox = {} -- Parametri da passare al template {{Infobox}}
	for k, v in pairs(frame:getParent().args) do
		if v ~= '' then
			args[k] = v
		end
	end
	local controlloGradoAmministrativo = controllaGradoAmministrativo(frame)
	if controllaGradoAmministrativo[1] then
		return controllaGradoAmministrativo[2]
	end
	if not args['Nome'] then
		args['Nome'] = mw.title.getCurrentTitle().text
	end
	argsInfobox['StileTitoloInt'] = stileTitoloInt()
	argsInfobox['TitoloInt'] = titoloInt(frame)
	argsInfobox['Immagine'] = immagine(frame)
	argsInfobox['Didascalia'] = args['Didascalia']
	argsInfobox['Gruppo1'] = 'Dati amministrativi'
	argsInfobox['Nome2'] = '[[Stato]]'
	argsInfobox['Valore2'] = valore2(frame)
	return frame:expandTemplate{title = 'Infobox', args = argsInfobox}
end

return p