Modulo:CategoriaMusicale

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Questo modulo rimpiazza il vecchio codice del Template:CategoriaMusicale. Vedi il manuale del template per l'uso.


local p = {}

local subject2wikilink = {
	['Album'] = '[[Album discografico|album]] musicali',
	['Album video'] = '[[Album discografico|album]] video',
	['Brani musicali'] = '[[Brano musicale|brani musicali]]',
	['Cantanti'] = '[[Cantante|cantanti]]',
	['Disc jockey'] = '[[disc jockey]]',
	['EP'] = '[[Extended play|EP]]',
	['Gruppi musicali'] = '[[Gruppo musicale|gruppi musicali]]',
	['Musicisti'] = '[[Musicista|musicisti]]',
	['Singoli'] = '[[Singolo (musica)|singoli]]'
}

--[[
	verifica quali delle chiavi della tabella subject2wikilink
	è presente all'inizio del titolo della categoria e la memorizza
	questa funzione è chiamata sia da p.main che dal template,
	tramite il codice {{#invoke:CategoriaMusicale|get_subject}}
]]
function p.get_subject()
	local title = mw.title.getCurrentTitle().text
	for k, v in pairs(subject2wikilink) do
		if title:sub(1,string.len(k))==k then
			return k
		end
	end
	return nil
end

--[[
	questa è la funzione principale che genera il wikicodice per il template,
	da invocare con il codice {{#invoke:CategoriaMusicale|main|genere|link_genere}}
]]
function p.main(frame)
	local args = frame.args
	local genre = args[1]
	local forced_link = args[2]
	local subject = p.get_subject()
	local text = ""
	
	if subject then
		text = "Questa categoria raggruppa voci su '''" .. subject2wikilink[subject] .. " [["
		if forced_link ~= "" then text = text .. forced_link .. "|" end
		text = text .. genre .. "]]'''.\n\n"
	end
	text = text .. "Categorie correlate:\n<div class=\"colonne_strette\">"
	if subject == "Gruppi musicali" or subject == "Musicisti" or subject == "Cantanti" or subject == "Disc jockey" then
		text = text .. string.format("\n* [[:Categoria:%s per nazionalità|%s per nazionalità]]", subject, subject)
	end
	if subject then
		text = text .. string.format("\n* [[:Categoria:%s per genere|%s per genere (tutti)]]", subject, subject)
	end
	
	-- aggiungi link alle categorie correlate se diverse da quella attuale
	for k, v in pairs(subject2wikilink) do
		if subject ~= k then
			text = text .. string.format("\n* [[:Categoria:%s %s|%s %s]]", k, genre, k, genre)
		end
	end
	text = text .. "</div>"
	
	return text
end

return p