Modulo:Tracce/sandbox: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m ovviamente... |
test abbr |
||
(17 versioni intermedie di un altro utente non mostrate) | |||
Riga 1:
local categories = {}
local discontinuous_num = '[[Categoria:Voci con template Tracce
local missing_title = '[[Categoria:
local unexpected_markup = '[[Categoria:
local unknown_format = '[[Categoria:
--
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 formatta 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)$")▼
else▼
secondi = args["Secondi" .. i] and mw.ustring.match(args["Secondi" .. i], "^%d%d?$") and
end▼
local durata = (minuti or 0) * 60 + (secondi or 0)▼
(not secondi and args["Secondi" .. i]) then
categories[#categories+1] = unknown_format▼
return durata, durata > 0 and string.format("%d:%02.f", minuti or 0, secondi or 0) or nil
end
Line 17 ⟶ 38:
]]--
local function track(args, i,
local titolo = args["Titolo" .. i]
local row_elements = {}
Line 23 ⟶ 44:
local interprete = args["Interprete" .. i]
if interprete then table.insert(row_elements, interprete .. " – ") end
corsivo = (corsivo and args["Corsivo" .. i] ~= "no") or
(not corsivo and (args["Corsivo" .. i] == "sì" or args["Corsivo" .. i] == "si"))
Line 33 ⟶ 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
▲ 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,
▲ 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 ⟶ 131:
testata = testata .. "."
end
▲ local corsivo = args["Corsivo"] == "no" and false or true
table.insert(tracks, testata)
-- compone la lista dei parametri
Line 131 ⟶ 139:
if visualizza_durata == "si" or visualizza_durata == "sì" then somma_durata = true end
local nums = {}
for k, v in pairs(args) do
local prefix, num =
if num and (num == '0' or num:sub(1,1) ~= '0') then
-- se il numero viene modificato da tonumber, è troppo alto
local titolo = args['Titolo' .. num]▼
categories[#categories+1] = missing_title
elseif k == 'Titolo' .. num then▼
if args[prefix .. num] and not validated_nums[num] then
table.insert(nums, tonumber(num))▼
validated_nums[num] = true
end
end
end
table.sort(nums)
categories[#categories+1] = missing_title
-- categoria di tracciamento se la numerazione delle tracce è discontinua
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
table.insert(tracks, new_track)▼
local new_track = track(args, num, durata_formattata)
▲ table.insert(tracks, new_track)
end
if somma_durata then durata = durata + durata_track end
end
Line 157 ⟶ 176:
table.insert(tracks, "Durata totale: " .. string.format("%d:%02.f", math.floor(durata/60) , durata % 60) .. "</p>")
end
local ns = mw.title.getCurrentTitle().namespace
return (tracce and table.concat(tracks, "\n") or '') .. (ns == 0 and table.concat(categories) or '')
end
Line 172 ⟶ 192:
-- 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
if not tracce and num then▼
▲ tracce = true
▲ end
end
end
▲ return tracce and componi_tracce(args) or ''
end
Line 216 ⟶ 229:
-- estrae tutti i parametri e li memorizza in una tabella (pframe ritorna una pseudotabella, vedi documentazione)
local args = {}
local
▲ local log ={}
▲ for k,v in pairs( pframe.args) do
if conversion_table[k] then -- Controlla
args[
else
-- estrae nome base e indice, se k=
local
if
args[conversion_table_index[
args[k] = v▼
end
end
▲ else -- non è neanche un parametro indicizzato, lo copia così com'è
▲ args[k] = v
▲ end
end
end
if args['Visualizza durata totale'] then args['Visualizza durata totale'] = 'si' end
▲ if primo_titolo then
▲ return componi_tracce(args, primo_titolo) -- table.concat(log, '\n*') --
▲ end
end
|