Modulo:Tracce/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
riscrivo per restituire sempre le cat di errore
test abbr
 
(9 versioni intermedie di un altro utente non mostrate)
Riga 12:
end
 
-- Calcola e restituisceformatta la durata di una traccia
local function getTrackLength(args, i)
local string_durata = args["Durata" .. i]
local minuti, secondi
if string_durata then
local string_minuti, string_secondi = mw.ustring.match(string_durata, "^(%d+):(%d%d)$")
minuti = tonumber(string_minuti) or 0
secondi = tonumber(string_secondi) or 0
else
minuti = tonumber(args["Minuti" .. i]) or 0
secondi = tonumberargs["Secondi" .. i] and mw.ustring.match(args["Secondi" .. i]), or"^%d%d?$") 0and
tonumber(args["Secondi" .. i])
end
local durata = (minuti or 0) * 60 + (secondi or 0)
if (string_durata and durata == 0) andor (string_duratanot orminuti and args["Minuti" .. i]) or args["Secondi" .. i]) then
(not secondi and args["Secondi" .. i]) then
categories[#categories+1] = unknown_format
end
return durata, durata > 0 and string.format("%d:%02.f", minuti or 0, secondi or 0) or nil
return durata
end
 
Line 53 ⟶ 55:
table.insert(row_elements, titolo)
local featuring = args["Featuring" .. i]
if featuring then table.insert(row_elements, " <small>(<abbr title=featuring>feat.</abbr> " .. featuring .. ")</small>") end
local note = args["Note" .. i]
if note then table.insert(row_elements, " <small>(" .. note .. ")</small>") end
if durata > 0 then
table.insert(row_elements, " – ")
table.insert(row_elements, string.format("%d:%02.f", minuti, secondi)durata)
end
local AutoreTesto = args["Autore testo" .. i]
Line 137 ⟶ 139:
if visualizza_durata == "si" or visualizza_durata == "sì" then somma_durata = true end
local nums = {}
local validated_nums = {}
for k, v in pairs(args) do
local prefix, num = string.match(k, '^(%D+)([0-9]+)$')
if num and (num == '0' or num:sub(1,1) ~= '0') then
-- se il numero viene modificato da tonumber, è troppo alto
Line 145 ⟶ 148:
categories[#categories+1] = missing_title
end
if args[prefix .. num] and not validated_nums[num] then
validated_nums[num] = true
table.insert(nums, num)
end
Line 151 ⟶ 155:
end
table.sort(nums)
if #nums == 0 then
categories[#categories+1] = missing_title
-- categoria di tracciamento se la numerazione delle tracce è discontinua
if #nums > 0 andelseif nums[1] + #nums - 1 ~= nums[#nums] then
categories[#categories+1] = discontinuous_num
end
Line 158 ⟶ 164:
-- estrae le tracce dai parametri e inserisce i valori nella tabella tracks
for k, num in ipairs(nums) do
local durata_track, durata_formattata = getTrackLength(args, num)
if args['Titolo' .. num] then
tracce = true
local new_track = track(args, num, durata_trackdurata_formattata)
table.insert(tracks, new_track)
end
Line 224 ⟶ 230:
local args = {}
local log = {}
for k, v in pairs(pframe.args) do
if v ~= nil and v ~= '' then
if conversion_table[k] then -- Controlla se è un parametro non indicizzato
args[conversion_table[k]] = v
else
-- estrae nome base e indice, se k=title1 allora prefix=title e num=1
local prefix, num = string.match(k, "^(%D+)(%d+)$")
if prefix and conversion_table_index[prefix] then -- controlla se è un parametro indicizzato
args[conversion_table_index[prefix] .. num] = v
elseif not num then -- non è neanche un parametro indicizzato, lo copia così com'è
args[k] = v
end
end
end