Modulo:Tracce/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m controllo namespace
riscrivo per restituire sempre le cat di errore
Riga 5:
local unknown_format = '[[Categoria:Voci con template Tracce con formato durata sconosciuto]]'
 
-- ProtectsProtegge auna stringstringa thatche willsarà beavvolta wrappeddal inmarkup wiki italic markup '' ... '' del corsivo
local function safeforitalics(str)
if str:sub(1,1) == "'" then str = "<span></span>" .. str end
if str:sub(-1,-1) == "'" then str = str .. "<span></span>" end
return str
end
 
-- Calcola e restituisce 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 = tonumber(args["Secondi" .. i]) or 0
end
local durata = minuti * 60 + secondi
elseifif durata == 0 and (string_durata or args["Minuti" .. i] or args["Secondi" .. i]) then
categories[#categories+1] = unknown_format
end
return durata
end
 
Line 17 ⟶ 36:
]]--
 
local function track(args, i, corsivodurata)
local titolo = args["Titolo" .. i]
local row_elements = {}
Line 23 ⟶ 42:
local interprete = args["Interprete" .. i]
if interprete then table.insert(row_elements, interprete .. " – ") end
local corsivo = args["Corsivo"] ~= "no" and true or false
corsivo = (corsivo and args["Corsivo" .. i] ~= "no") or
(not corsivo and (args["Corsivo" .. i] == "sì" or args["Corsivo" .. i] == "si"))
Line 36 ⟶ 56:
local note = args["Note" .. i]
if note then table.insert(row_elements, " <small>(" .. note .. ")</small>") end
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 = tonumber(args["Secondi" .. i]) or 0
end
local durata = minuti * 60 + secondi
if durata > 0 then
table.insert(row_elements, " – ")
table.insert(row_elements, string.format("%d:%02.f", minuti, secondi))
elseif string_durata or args["Minuti" .. i] or args["Secondi" .. i] then
categories[#categories+1] = unknown_format
end
local AutoreTesto = args["Autore testo" .. i]
Line 122 ⟶ 129:
testata = testata .. "."
end
local corsivo = args["Corsivo"] ~= "no" and true or false
table.insert(tracks, testata)
-- compone la lista dei parametri
Line 132 ⟶ 138:
local 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
num = tonumber(num)
if not args['Titolo' .. num] then
categories[#categories+1] = missing_title
end
-- se il numero viene modificato da tonumber, è troppo alto
elseif k == 'Titolo' .. num andif args['Titolo'prefix .. tonumber(num)] then
table.insert(nums, tonumber(num))
end
end
Line 147 ⟶ 155:
categories[#categories+1] = discontinuous_num
end
local tracce = false
-- estrae le tracce dai parametri e inserisce i valori nella tabella tracks
for k, num in ipairs(nums) do
local new_track, durata_track = trackgetTrackLength(args, num, corsivo)
if args['Titolo' .. num] then
table.insert(tracks, new_track)
tracce = true
local new_track = track(args, num, durata_track)
table.insert(tracks, new_track)
end
if somma_durata then durata = durata + durata_track end
end
Line 158 ⟶ 171:
end
local ns = mw.title.getCurrentTitle().namespace
return (tracce and table.concat(tracks, "\n") or '') .. (ns == 0 and table.concat(categories) or '')
end
 
Line 173 ⟶ 186:
-- estrae tutti i parametri e li memorizza in una tabella
local args = {}
local tracce = false
for k, v in pairs(pframe.args) do
if v ~= nil and v ~= '' then
args[k] = v
local num = string.match(k, "^Titolo([0-9]+)$")
num = num and (num == '0' or num:sub(1,1) ~= '0')
if not tracce and num then
tracce = true
end
end
end
return tracce and componi_tracce(args) or ''
-- procede solo se c'è almeno un campo titolo
return tracce and componi_tracce(args) or ''
end
 
Line 218 ⟶ 224:
local args = {}
local log = {}
local tracce = false
for k,v in pairs(pframe.args) do
if conversion_table[k] then -- Controlla se è un parametro non indicizzato
Line 227 ⟶ 232:
if prefix and conversion_table_index[prefix] then -- controlla se è un parametro indicizzato
args[conversion_table_index[prefix] .. num] = v
if not tracce and (num == '0' or num:sub(1,1) ~= '0') then
tracce = true
end
elseif not num then -- non è neanche un parametro indicizzato, lo copia così com'è
args[k] = v
Line 236 ⟶ 238:
end
if args['Visualizza durata totale'] then args['Visualizza durata totale'] = 'si' end
return tracce and componi_tracce(args) or '' -- table.concat(log, '\n*') --
end