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 controllaParametri(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
	if not args['Stato'] then
		return {true, frame:expandTemplate{title = 'Errore template', args = {'Stato', 'Divisioni amministrative', man = 'Template:Divisione amministrativa/man'} } }
	elseif not(mw.title.new(args['Stato'], 'Template').exists) then
		return {true, frame:expandTemplate{title = 'Errore template', args = {'Stato', 'Divisioni amministrative', t = 'r', man = 'Template:Divisione amministrativa/man'} } }
	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;'
	else
		return nil
	end
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 nome
end

local function immagine(frame)
	local output = HtmlBuilder.create()
	if args['Nome ufficiale'] then
		output.wikitext(args['Nome ufficiale'])
		if args['Stemma'] or args['Bandiera'] or args['Panorama'] then
			output.tag('br /', {unclosed = true})
		end
	end
	if args['Stemma'] then
		output.wikitext('[[File:'..args['Stemma']..'|80x125px|'..args['Nome']..'– Stemma]]')
	end
	if args['Bandiera'] then
		output.wikitext('[[File:'..args['Bandiera']..'|125x125px')
		if args['Bordo bandiera'] ~= 'no' then
			output.wikitext('|border')
		end
		output.wikitext('|'..args['Nome']..' – Bandiera]]')
	end
	if args['Panorama'] then
		output.wikitext('[[File:'..args['Panorama']..'|')
		if args['Didascalia'] then
			output.wikitext(args['Didascalia'])
		else
			output.wikitext(args['Nome']..' – Veduta')
		end
		output.wikitext('|260x250px]]')
	end
	return tostring(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 controlloParametri = controllaParametri(frame)
	if controlloParametri[1] then
		return controlloParametri[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'] = 'titolo del gruppo 1'
	argsInfobox['Nome2'] = 'titolo del nome 2'
	argsInfobox['Valore2'] = 'titolo del valore 2'
	return frame:expandTemplate{title = 'Infobox', args = argsInfobox}
end

return p