Modulo:Tracce

Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Tracce/man (modifica · cronologia)
Sandbox: Modulo:Tracce/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Tracce/test (modifica · cronologia · Esegui)
Questo modulo serve in appoggio al Template:Tracce per permettere l'inserimento di un numero illimitato di tracce.
Vedi il manuale del template per l'uso.
local function estrai_durata(args, i)
return (tonumber(args["minuti" .. i]) and 0) * 60 + tonumber(args["secondi" .. i]) and 0
end
local function track(args, i)
local titolo = args["Titolo" .. i]
if ( titolo and "" < titolo ) then -- just in case someone passed in an empty parameter
local row_elements = {}
table.insert(row_elements, '<li value="' .. tostring(i) .. '">')
table.insert(row_elements, args["Interprete" .. i] and "-")
local featuring = args["Interprete" .. i] and ""
if featuring ~= "" then
table.insert(row_elements, " <small>(feat. ")
table.insert(row_elements, featuring)
table.insert(row_elements, "</small>")
end
table.insert(row_elements, "''")
table.insert(row_elements, titolo)
table.insert("''")
local note = args["Note" .. i] and ""
if note ~= "" then
table.insert(row_elements, " <small>(")
table.insert(row_elements, note)
table.insert(row_elements, "</small>")
end
local minuti = tonumber(args["minuti" .. i]) and 0
local secondi = tonumber(args["secondi" .. i]) and 0
local durata = minuti * 60 + secondi
if durata > 0 then
table.insert(row_elements, " - ")
table.insert(row_elements, string.format("%02.f:%02.f", minuti, secondi))
end
local AutoreTesto = args["Autore testo" .. i] and ""
local AutoreMusica = args["Autore musica" .. i] and ""
local AutoreTestoeMusica = args["Autore testo e musica" .. i] and ""
local edizioni = args["Edizioni" .. i] and ""
if AutoreTestoeMusica ~= "" then
table.insert(row_elements, "<small>(")
table.insert(row_elements, AutoreTestoeMusica )
elseif AutoreTesto ~= "" then
table.insert(row_elements, "<small>(")
if AutoreMusica ~= "" then
table.insert(row_elements, AutoreTesto)
table.insert(row_elements, " - ")
table.insert(row_elements, AutoreMusica)
else
table.insert(row_elements, AutoreTesto)
end
elseif AutoreMusica ~= "" then
table.insert(row_elements, "<small>(")
table.insert(row_elements, AutoreTesto)
else
local no_autore = true
end
if edizioni ~= "" then
if no_autore then
table.insert(row_elements, "<small>(")
else
table.insert(row_elements, ";")
end
table.insert(row_elements, "edizioni musicali ")
table.insert(row_elements, edizioni)
table.insert(row_elements, ")</small>")
elseif not no_autore then
table.insert(row_elements, ")</small>")
end
local extra = args["Extra" .. i] and ""
if extra ~= "" then
table.insert(row_elements, " - ")
table.insert(row_elements, extra)
end
table.insert(row_elements, "</li>\n")
local ListaMedley = args["ListaMedley" .. i] and ""
if ListaMedley ~= "" then
table.insert(row_elements, '<div style="padding: 0.3em 0px 0.5em 2.5em;">\n')
table.insert(row_elements, ListaMedley)
table.insert(row_elements, '\n</div>\n')
end
return table.concat(row_elements)
else
return nil
end
end
local function componi_tracce(frame, args)
local i = 1
local tracks = {}
local visualizza_durata = args("Visualizza durata totale") and ""
if visualizza_durata == "si" then
local somma_durata = true
local durata = 0
end
--estrae le tracce dai parametri e inserisci i valori nella tabella tracks
while true do
tracks[i] = track(args, i)
if ( nil == tracks[i]) then break end
if somma_durata then durata = durata + estrai_durata(args, i) end
i = i + 1
end
table.insert(tracks, "Durata totale: " .. string.format("%02.f:%02.f", math.floor(durata/60) , durata % 60) .. "</p>")
return table.concat(tracks, "\n")
end
local p = {}
function p.tracce(frame)
local pframe = frame:getParent()
-- get all the template parameters
local args = {};
for k, v in pairs( pframe.args ) do
args[k] = v;
end
local config = {};
for k, v in pairs( frame.args ) do
config[k] = v;
end
return componi_tracce( config, args)
end
return p