Modulo:Tracce/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix
ammetto numerazione discontinua delle tracce
Riga 1:
local categories = {}
local discontinuous_num = '[[Categoria:Voci con template Tracce a numerazione discontinua]]'
local missing_title = '[[Categoria:Errori di compilazione del template Tracce - titolo mancante]]'
local unexpected_markup = '[[Categoria:Errori di compilazione del template Tracce - markup inaspettato]]'
Line 19 ⟶ 20:
 
local function track(args, i, corsivo)
local titolo = args["Titolo" .. i] or ""
local row_elements = {}
if titolo ~= "" then
table.insert(row_elements, '<li value="' .. tostring(i) .. '">')
local row_elements = {}
local interprete = args["Interprete" .. i] or ""
table.insert(row_elements, '<li value="' .. tostring(i) .. '">')
local if interprete ~= args["Interprete" then table.insert(row_elements, interprete .. i]" or "") end
corsivo = (corsivo and args["Corsivo" .. i] ~= "no") or
if interprete ~= "" then table.insert(row_elements, interprete .. " – ") end
(not corsivo and (args["Corsivo" .. corsivoi] == (corsivo"sì" andor args["Corsivo" .. i] ~== "nosi") or)
if titolo:find(not corsivo and (args["Corsivo" .. i] == "sì''" or args["Corsivo'''") .. i] == "si"))then
categories[#categories+1] = unexpected_markup
if titolo:find(corsivo and "''" or "'''") then
end
categories[#categories+1] = unexpected_markup
if corsivo then
end
titolo = "''" .. safeforitalics(titolo) .. "''"
if corsivo then
end
titolo = "''" .. safeforitalics(titolo) .. "''"
table.insert(row_elements, titolo)
end
local featuring = args["Featuring" .. i] or ""
table.insert(row_elements, titolo)
if featuring ~= "" then table.insert(row_elements, " <small>(feat. " .. featuring .. ")</small>") end
local featuring = args["Featuring" .. i] or ""
local note = args["Note" .. i] or ""
if featuring ~= "" then table.insert(row_elements, " <small>(feat. " .. featuring .. ")</small>") end
if note ~= "" then table.insert(row_elements, " <small>(" .. note .. ")</small>") end
local note = args["Note" .. i] or ""
local string_durata = args["Durata" .. i]
if note ~= "" then table.insert(row_elements, " <small>(" .. note .. ")</small>") end
local minuti, secondi
local string_durata = args["Durata" .. i]
if string_durata then
local minuti, secondi
local string_minuti, string_secondi = if mw.ustring.match(string_durata, then"(%d+):(%d%d)")
minuti = tonumber(string_minuti) or 0
local string_minuti, string_secondi = mw.ustring.match(string_durata, "(%d+):(%d%d)")
minuti secondi = tonumber(string_minutistring_secondi) or 0
else
secondi = tonumber(string_secondi) or 0
minuti = tonumber(args["Minuti" .. i]) or 0
else
minuti secondi = tonumber(args["MinutiSecondi" .. i]) or 0
end
secondi = tonumber(args["Secondi" .. i]) or 0
local durata = minuti * 60 + secondi
end
local if durata = minuti * 60> +0 secondithen
table.insert(row_elements, " – ")
if durata > 0 then
table.insert(row_elements, string.format("%d:%02.f", minuti, "secondi))
else
table.insert(row_elements, string.format("%d:%02.f", minuti, secondi))
local args_durata = string_durata or args["Minuti" .. i]
else
local args_durata = string_durata or args["MinutiSecondi" .. i] or ""
if args_durata ~= "" then
or args["Secondi" .. i] or ""
categories[#categories+1] = unknown_format
if args_durata ~= "" then
end
categories[#categories+1] = unknown_format
end
local AutoreTesto = args["Autore testo" .. i] or ""
end
local AutoreTestoAutoreMusica = args["Autore testomusica" .. i] or ""
local AutoreMusicaAutoreTestoeMusica = args["Autore testo e musica" .. i] or ""
local AutoreTestoeMusicaedizioni = args["Autore testo e musicaEdizioni" .. i] or ""
local no_autore = false
local edizioni = args["Edizioni" .. i] or ""
if AutoreTestoeMusica ~= "" then
local no_autore = false
table.insert(row_elements, " <small>(" if.. AutoreTestoeMusica ~= "" then)
elseif AutoreTesto ~= "" then
table.insert(row_elements, " <small>(" .. AutoreTestoeMusica )
table.insert(row_elements, " <small>(testo: " .. AutoreTesto)
elseif AutoreTesto ~= "" then
if AutoreMusica ~="" then
table.insert(row_elements, " <small>(testo: " .. AutoreTesto)
table.insert(row_elements, " musica: " if.. AutoreMusica ~="" then )
end
table.insert(row_elements, " – musica: " .. AutoreMusica)
elseif AutoreMusica ~= "" then
end
table.insert(row_elements, " <small>(musica: " elseif.. AutoreMusica ~= "" then)
else
table.insert(row_elements, " <small>(musica: " .. AutoreMusica)
no_autore = true
else
end
no_autore = true
if edizioni ~= "" then
end
if edizioni ~= ""no_autore then
table.insert(row_elements, " <small>(")
if no_autore then
else
table.insert(row_elements, " <small>(")
table.insert(row_elements, "; ")
else
end
table.insert(row_elements, "; ")
table.insert(row_elements, "edizioni musicali " .. edizioni .. ")</small>")
end
elseif not no_autore then
table.insert(row_elements, "edizioni musicali " .. edizioni .. ")</small>")
table.insert(row_elements, ")</small>")
elseif not no_autore then
end
table.insert(row_elements, ")</small>")
local extra = args["Extra" .. i] or ""
end
if extra ~= "" then table.insert(row_elements, " – " .. extra) end
local extra = args["Extra" .. i] or ""
if extra ~= "" then table.insert(row_elements, "</li>\n" .. extra) end
local ListaMedley = args["ListaMedley" .. i] or ""
table.insert(row_elements, "</li>\n")
if ListaMedley ~= "" then table.insert(row_elements, '<div style="padding: 0.3em 0px 0.5em 2.5em;">\n' .. ListaMedley .. '</div>') end
local ListaMedley = args["ListaMedley" .. i] or ""
return table.concat(row_elements), durata
if ListaMedley ~= "" then table.insert(row_elements, '<div style="padding: 0.3em 0px 0.5em 2.5em;">\n' .. ListaMedley .. '</div>') end
return table.concat(row_elements), durata
else
return nil
end
end
 
Line 101 ⟶ 98:
restituisce una stringa contenente l'output da inserire nella voce
]]--
local function componi_tracce(args, primo_titolo)
-- array per accumulare le righe della lista man mano che vengono elaborate
local tracks = {}
Line 138 ⟶ 135:
table.insert(tracks, testata)
-- compone la lista dei parametri
local i = primo_titolo
table.insert(tracks, "<ol>")
local visualizza_durata = args["Visualizza durata totale"] or ""
Line 144 ⟶ 140:
local somma_durata = false
if visualizza_durata == "si" or visualizza_durata == "sì" then somma_durata = true end
local nums = {}
--estrae le tracce dai parametri e inserisci i valori nella tabella tracks
whilefor truek, v in pairs(args) do
local new_track, durata_tracknumero_titolo = trackk:match(args, i, corsivo'%D(%d+)$')
if new_track == niltonumber(numero_titolo) then break end
local titolo = args['Titolo' .. numero_titolo] or ''
if v ~= '' and titolo == '' then
categories[#categories+1] = missing_title
elseif k == 'Titolo' .. numero_titolo and titolo ~= '' then
table.insert(nums, tonumber(numero_titolo))
end
end
end
table.sort(nums)
-- estrae le tracce dai parametri e inserisce i valori nella tabella tracks
for k, num in ipairs(nums) do
local new_track, durata_track = track(args, num, corsivo)
table.insert(tracks, new_track)
if somma_durata then durata = durata + durata_track end
if k ~= num then categories[#categories+1] = discontinuous_num end
i = i + 1
end
table.insert(tracks, "</ol>")
Line 171 ⟶ 179:
-- estrae tutti i parametri e li memorizza in una tabella
local args = {}
local primo_titolotitles = false
for k, v in pairs( pframe.args ) do
if v ~= nil then args[k] = v end
if k:match("^Titolo(%d+)$") then titles = true end
-- Se è un titolo confronto con primo_titolo e se è minore lo memorizzo
local pos = string.match(k, "Titolo(%d+)$")
if pos then
pos = tonumber(pos)
if not primo_titolo or pos < primo_titolo then
primo_titolo = pos
end
end
end
-- Aggiunge una categoria di errore qualora una traccia sia senza titolo
for k, v in pairs( args ) do
local numero_titolo = k:match('%D(%d+)$')
if numero_titolo then
local titolo = args['Titolo' .. numero_titolo]
if v ~= '' and (titolo == nil or titolo == '') then
categories[#categories+1] = missing_title
end
end
end
-- Se primo_titolo è falso non c'è alcun campo titolo
if primo_titolo then
return componi_tracce(args, primo_titolo)
else
return ""
end
-- procede solo se c'è almeno un campo titolo
return titles and componi_tracce(args) or ""
end