Modulo:Tracce: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
M7 (discussione | contributi) m Ha protetto "Module:Tracce": Template usato in maniera estensiva: semiprotezione ([Modifica=Solo utenti registrati (autoconfermati)] (infinito) [Spostamento=Solo utenti registrati (autoconfermati)] (infinito)) |
aggiorno per gestire anche la compatibilità con l'omologo template da en:template:track_listing |
||
Riga 1:
return (tonumber(args["Minuti" .. i]) or 0) * 60 + (tonumber(args["Secondi" .. i]) or 0)▼
end▼
-- Protects a string that will be wrapped in wiki italic markup '' ... ''
local function safeforitalics( str )
Riga 19 ⟶ 15:
end
--[[
Riceve una lista di parametri e l'indice del gruppo di parametri da comporre
in una traccia
]]--
local function track(args, i)
Riga 32:
local note = args["Note" .. i] or ""
if note ~= "" then table.insert(row_elements, " <small>(" .. note .. ")</small>") end
local
if string_durata then
local secondi = tonumber(args["Secondi" .. i]) or 0▼
local string_minuti, string_secondi = mw.ustring.match(string_durata, "(%d+):(%d%d)")
local durata = minuti * 60 + secondi▼
minuti = tonumber(string_minuti) or 0
secondi = tonumber(string_secondi) or 0
else
end
if durata > 0 then
table.insert(row_elements, " – ")
Riga 73 ⟶ 80:
local ListaMedley = args["ListaMedley" .. i] or ""
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
Riga 79 ⟶ 86:
end
--[[
Riceve una tabella di parametri e l'indice del primo gruppo di parametri del template tracce,
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
-- compone testata▼
local tracks = {}
▲ -- compone la testata dell'elenco tracce
local testata = ""
local noautore = false
local autoreTestoeMusica = args["Autore testi e musiche"] or ""
if autoreTestoeMusica ~= "" then
testata = "Testi e musiche di " .. autoreTestoeMusica
Riga 114 ⟶ 126:
table.insert(tracks, "<ol>")
local visualizza_durata = args["Visualizza durata totale"] or ""
local durata = 0
local somma_durata = false
if visualizza_durata == "si" then somma_durata = true end
--estrae le tracce dai parametri e inserisci i valori nella tabella tracks
while true do
local new_track, durata_track = track(args, i)
if new_track==nil then break end
table.insert(tracks, new_track)
if somma_durata then durata = durata +
i = i + 1
end
Riga 134 ⟶ 146:
local p = {}
--[[
Funzione di interfaccia con template:Tracce
Legge i parametri e li inserisce nella tabella args, che quindi passa a componi_tracce
per l'elaborazione
]]--
function p.tracce(frame)
-- ottiene i parametri del template originale
local pframe = frame:getParent()
-- estrae tutti i parametri e li memorizza in una tabella
local args = {}
local primo_titolo
local inizio, fine, numero_titolo
for k, v in pairs( pframe.args ) do
if v ~=nil then args[k] = v end
-- Se è un titolo confronto con primo_titolo e se è minore lo memorizzo
if pos then
numero_titolo = tonumber(string.sub(k, fine+1))▼
if not primo_titolo
primo_titolo = pos
end
end
end
if primo_titolo then
return componi_tracce(args, primo_titolo)
else
return ""
end
▲end
-- Tavola di conversione per i parametri di en:template:Track_listing non indicizzati
local conversion_table = {
['all_writing'] = 'Autore testi e musiche',
['all_lyrics'] = 'Autore testi',
['all_music'] = 'Autore musiche',
['total_length'] = 'Visualizza durata totale'
}
-- Tavola di conversione per i parametri di en:template:Track_listing indicizzati
local conversion_table_index ={
['title'] = 'Titolo',
['note'] = 'Note',
['title'] = 'Titolo',
['music'] = 'Autore testo e musica',
['writer'] = 'Autore musica',
['lyrics'] = 'Autore testo',
['length'] = 'Durata',
['extra'] = 'Extra'
}
--[[
Funzione di interfaccia con template:Track_listing
Legge i parametri, li converte nei parametri corrispondenti del template:Tracce
e li inserisce nella tabella args, che quindi passa a componi_tracce
per l'elaborazione
]]--
function p.en_tracks(frame)
local pframe = frame:getParent()
-- estrae tutti i parametri e li memorizza in una tabella (pframe ritorna una pseudotabella, vedi documentazione)
local args = {}
local primo_titolo
local log ={}
for k,v in pairs( pframe.args) do
if conversion_table[k] then -- Controlla s è un parametro non indicizzato
args[ conversion_table[k]] = v
else
-- estrae nome base e indice, se k=Title1 allora base_key=Title e pos=1
local base_key, pos = string.match(k, "(%D+)(%d+)$")
if pos and base_key and conversion_table_index[base_key] then --controlla se è un parametro indicizzato
args[conversion_table_index[base_key] .. pos] = v
if base_key == 'title' and (not primo_titolo or pos < primo_titolo) then
primo_titolo = pos
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*') --
else
return
end
end
|