Modulo:MultiBand: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
m modulo no globals obsoleto
 
(7 versioni intermedie di 2 utenti non mostrate)
Riga 1:
--[[
-- modulo per gestire l'omonimo template
* Modulo a supporto del template MultiBand.
-- la gestione dei parametri con numeri progressivi prende spunto da Modulo:Tracce
]]--
 
require('strict')
local args = {}
local maxInterval = 0
 
local function getValue(param, year)
result = ""
for i=1,maxInterval do
currentYear = args["anno" .. i]
if currentYear > year then break end
temp = args[param .. i]
if temp ~=nil then
result = args[param .. i]
end
end
return result
end
 
local p = {}
 
-- Dato un unico parametro posizionale che può valere "nome" o "imm"
-- e un parent arg con nome "anno", itera i parent arg "annoN" e restituisce
-- il relativo nomeN o immN se l'anno richiesto è >= di annoN,
-- altrimenti l'ultimo valore precedente noto.
function p.get(frame)
local pframepargs = frame:getParent().args
local reqAnno = tonumber(pargs.anno) or (tonumber(os.date('%Y'))+1)
for k, v in pairs( pframe.args ) do
local ret
-- mappo gli argomenti del template
 
if v ~=nil then args[k] = v end
for in = 1,maxInterval 50 do
-- cerco l'intervallo più recente in base al numero più alto fra "nomeN", "voceN" e "immN"
local anno = tonumber(pargs['anno' .. n])
num = string.match(k, "(?:nome|voce|imm)(%d+)$")
if numanno then
if tonumber(num)reqAnno >= maxIntervalanno then
ret = pargs[frame.args[1] .. n] or ret
maxInterval = num
end
else
break
end
end
 
return resultret
local year = args["anno"]
if year == nil then year = getValue("anno", maxInterval) end
return getValue(frame.args[1], year)
end