Modulo:Tracce/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Moroboshi (discussione | contributi)
Nessun oggetto della modifica
Moroboshi (discussione | contributi)
test
Riga 15:
end
 
--[[
Riceve una lista di parametri e l'indice del gruppo di parametri da comporre
in una traccia
]]--
 
local function track(args, i)
Line 37 ⟶ 41:
secondi = tonumber(args["Secondi" .. i]) or 0
end
local durata = minuti * 60 + secondi
if durata > 0 then
table.insert(row_elements, " – ")
Line 50 ⟶ 54:
table.insert(row_elements, " <small>(" .. AutoreTestoeMusica )
elseif AutoreTesto ~= "" then
table.insert(row_elements, " <small>(Testo: " .. AutoreTesto)
if AutoreMusica ~= "" then
table.insert(row_elements, AutoreTesto" .. "- Musica: " .. AutoreMusica)
else
table.insert(row_elements, AutoreTesto)
end
elseif AutoreMusica ~= "" then
table.insert(row_elements, " <small>(Musica: " .. AutoreMusica)
else
no_autore = true
Line 82 ⟶ 84:
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
Line 117 ⟶ 124:
table.insert(tracks, "<ol>")
local visualizza_durata = args["Visualizza durata totale"] or ""
local durata = 0
local somma_durata = false
if visualizza_durata == "si" or visualizza_durata == "sì" then somma_durata = true end
--estrae le tracce dai parametri e inserisci i valori nella tabella tracks
while true do
Line 137 ⟶ 144:
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 (pframe ritorna una pseudotabella, vedi documentazione)
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
inizio, fine = string.find(k, "Titolo", 1, true)
ifpos fine ~= nil thenstring.match(k, "Titolo(%d+)$")
if pos elsethen
numero_titolopos = tonumber(string.sub(k, fine+1)pos)
if numero_titolo ~= nil and (not primo_titolo or numero_titolo < primo_titolo) then
if not primo_titolo primo_titoloor =pos < primo_titolo numero_titolothen
primo_titolo = pos
end
end
end
-- Se primo_titolo è falso non c'è alcun campo titolo
if primo_titolo then
return componi_tracce(args, primo_titolo)
Line 161 ⟶ 175:
end
 
-- Tavola di conversione per i parametri di en:template:Track_listing non indicizzati
local conversion_table = {
['all_writing'] = 'Autore testi e musiche',
Line 168 ⟶ 183:
}
 
-- 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',
Line 179 ⟶ 194:
}
 
--[[
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()
Line 186 ⟶ 207:
local log ={}
for k,v in pairs( pframe.args) do
if conversion_table[k] then -- Controlla s è un parametro non indicizzato
 
if conversion_table[k] then
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
 
if pos and base_key and conversion_table_index[base_key] then
args[conversion_table_index[base_key] .. pos] = v
pos = tonumber(pos)
Line 198 ⟶ 218:
primo_titolo = pos
end
else -- non è neanche un parametro indicizzato, lo copia così com'è
else
args[k] = v
end
end
end
Line 207 ⟶ 227:
return componi_tracce(args, primo_titolo) -- table.concat(log, '\n*') --
else
return
end
end