Modulo:Controllo certificazioni

Versione del 4 mar 2020 alle 22:16 di Sakretsu (discussione | contributi) (in caso di più template:Album nella stessa voce)
Info Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Controllo certificazioni/man (modifica · cronologia)
Sandbox: Modulo:Controllo certificazioni/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Controllo certificazioni/test (modifica · cronologia · esegui)

Modulo per rilevare certificazioni FIMI di pubblicazioni antecedenti al 2009 nei parametri standard del template:Album. Genera una categoria che segnala la necessità di spostare queste certificazioni in parametri appositi.


local p = {}

local cat = '[[Categoria:Pubblicazioni antecedenti al 2009 con certificazione FIMI da spostare]]'

function p.main(frame)
	local year = tonumber(frame:getParent().args.anno)
	if not year or year > 2008 then return end
	local content = mw.title.getCurrentTitle():getContent()
	local awards = { "d'oro", "di platino", "di diamante" }
	for _, v in ipairs(awards) do
		local i = 1
		local pattern = '^(.-)|%s*numero dischi ' .. v .. '%s*=(.+)$'
		for subcontent in mw.text.gsplit(content, '{{ *[Aa]lbum[ \n]*|') do
			if i ~= 1 then
				local pre, post = ('|' .. subcontent):match(pattern)
				if post then
					-- evita falsi positivi col template Brano musicale
					if pre:match('{{ *[Bb]rano musicale *|') then break end
					post = post:sub(1, 2000)
					local n = 0
					for s, c in string.gmatch(post, '(.-)([|{}]+)') do
						if s:match('FIMI') then
							return cat
						end
						n = n + select(2, c:gsub('{{', ''))
						n = n - select(2, c:gsub('}}', ''))
						if n == 0 and c:match('|$') or n < 0 then
							break
						end
					end
				end
			end
			i = i + 1
		end
	end
end

return p