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]]'
--
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
-- 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▼
local durata = minuti * 60 + secondi▼
categories[#categories+1] = unknown_format▼
return durata
end
Line 17 ⟶ 36:
]]--
local function track(args, i,
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
table.insert(nums,
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
if args['Titolo' .. num] then
table.insert(tracks, new_track)▼
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
▲ tracce = true
▲ end
end
end
▲ return tracce and componi_tracce(args) or ''
end
Line 218 ⟶ 224:
local args = {}
local log = {}
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
▲ 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
end
|