Modulo:Sandbox/ppong: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
stile
Riga 1:
local getArgs= require("Modulo:Arguments").getArgs
local iconaArgomento= require("Modulo:Sandbox/ppong/Icona").iconaArgomento
 
require("Modulo:No globals")
 
Riga 177 ⟶ 174:
-- FUNZIONE DI UTILITA'
--------------------------------------------------------------------------------
 
local getArgs= require("Modulo:Arguments").getArgs
 
local iconaArgomento= require("Modulo:Sandbox/ppong/Icona").iconaArgomento
 
local italiano= mw.language.new("it")
 
local function riordinaTabella(t) -- ovvero come complicarsi la vita inutilmente
local n= 0
for _, _ in pairs(t) do
n= n + 1
end
local i= 0
for ii= 1, n do
Riga 187 ⟶ 191:
i= i +1
if t[i] then
break
end
end
t[ii]= t[i]
end
end
 
-- CLASSE MONITORAGGIO
--------------------------------------------------------------------------------
 
local monitoraggioMonitoraggio= {}
 
function monitoraggioMonitoraggio:newError(err, cat) -- funzione di utilità per gli errori
if not self.errori then
self.errori= {}
end
self.errori[#self.errori + 1]= err
-- if cat then
Riga 204 ⟶ 213:
-- self.categorie_errore[cat]= cat end
end
 
 
function monitoraggioMonitoraggio:organizzaArgomenti(args)
for k, v in pairs(args) do -- minuscolizza tutti i parametri
if type(k) == "string" then
Riga 214 ⟶ 224:
elseif kk ~= k then
args[kk]= v
args[k]= nil
end
end
end
self.voti= {}
for _, s in ipairs({"accuratezza", "scrittura", "fonti", "immagini"}) do
Riga 223 ⟶ 236:
else
self:newError("valore \""..voto.."\" non riconosciuto per il campo <tt>"..s.."</tt>")
self.voti[s]= "NC"
end
args[s]= nil
end
for _, s in ipairs{"note", "utente", "data"} do
self[s]= args[s]
args[s]= nil
end
if args.progetto and args.progetto1 then
self:newError("<tt>progetto</tt> e <tt>progetto1</tt> entrambi specificati, sono due donominazioni alternative per il primo progetto, i seguenti vanno numerati a partire da 2")
Riga 233 ⟶ 249:
elseif args.progetto then
args.progetto1= args.progetto
args.progetto= nil
end
self.progetti= {}
for k, v in pairs(args) do
if string.find(k, "^progetto%d+$") then
local i= tonumber(k:match("^progetto(%d+)$"))
local uv= mw.language.new("it")italiano:ucfirst(v)
if config.progetti[v] then -- questo lavoro azzoppa l'iconaArgomento
v= config.progetti[v]
Riga 244 ⟶ 261:
v= config.progetti[uv]
else
v= uv
end
self.progetti[i]= v
args.k= nil
else
self:newError("parametro <tt>"..k.."</tt> non riconosciuto")
args[k]= nil
end
end
riordinaTabella(self.progetti)
if #self.progetti == 0 then
Riga 256 ⟶ 276:
self:newError("più di quattro progetti specificati")
for i= 5, #self.progetti do
self.progetti[i]= nil
end
end
end
 
 
function monitoraggioMonitoraggio:assegnaLivello() -- la funzione attuale non è proprio così banale
local out= "non compilate"
for _, v in pairs(self.voti) do
Riga 265 ⟶ 289:
for k, vvv in pairs(self.voti) do -- un livello corrispondente al più basso valore tra i voti che sono stati dati alla voce
if vv == vvv then
out= config.livelli[vvv]
self.valore_minimo= k -- serve a scrivere: "non è possibile dare un voto maggiore con tale parametro che ha un voto tanto basso"
do break end break
end end end
break end end
if out ~= "non compilate" then
self.livello= out end
break
end
end
break
end
end
self.livello= out end
end
 
 
function monitoraggioMonitoraggio:creaCategorie()
local out= self.categorie or {}
out[#out + 1]= "[[Categoria:Voci monitorate - "..self.livello.."]]"
Riga 278 ⟶ 311:
local indirizzo= "Voci monitorate Progetto "..prg.." - "..self.livello
if mw.title.makeTitle(Categoria, indirizzo):esist() then
out[#out + 1]= "[[Categoria:"..indirizzo.."]]"
end
end
for k, v in pairs(self.voti) do
out[#out + 1]= "[[Categoria:Voci monitorate - "..k.." "..v.."]]"
Riga 284 ⟶ 319:
local indirizzo= "Progetto:"..prg.."/Tabella monitoraggio automatico - "..self.livello
if mw.title.makeTitle(Categoria, indirizzo):esist() then
out[#out + 1]= "[[Categoria:"..indirizzo.."]]"
end
end
end
if not self.data then
self:newError("data non specificata")
Riga 292 ⟶ 330:
out[#out + 1]= "[[Categoria:"..indirizzo.."]]"
else
self:newError("data non riconosciuta, inserire: <code>data = "..mw.language.new("it")italiano:formatDate("F Y").."</code>")
end
end
self.categorie= out
end
 
 
function monitoraggioMonitoraggio:impostaRigaProgetti()
local out= { icone= {}, testo= {} }
for i, prg in ipairs(self.progetti) do
Riga 302 ⟶ 344:
out.testo= {"[[Progetto:"..prg.."/Monitoraggio voci|Monitoraggio "..prg.."]]"}
else
out.testo[i]= "[[Progetto:"..prg.."/Monitoraggio voci|"..prg.."]]"
end
end
return out
end
 
 
function monitoraggioMonitoraggio:impostaRigaLivello()
local out= {}
local liv= self.livello
Riga 313 ⟶ 359:
out.icona= "<span style=\"font-weight: bold; font-size: 145%; border: 1px solid lightsteelblue; background:"..
config.colore_voti[config.livelli[liv]].."; color:blue; \">&nbsp;'''<tt>&nbsp;[[:Categoria:Voci monitorate - "..liv.."|"..
string.gsub(liv, "livello ", "").."]]'''</tt>&nbsp;</span>"
end
out.testo= config.descrizione_stato.livello[liv]
-- da raffinare sia per gli stub che per i monitoraggi incompleti
if self.data then
out.data= "Voce monitorata nel mese di "..self.data
end
return out
end
 
 
function monitoraggioMonitoraggio:impostaRigheVoti()
local out= {}
for i, s in ipairs({"accuratezza", "scrittura", "fonti", "immagini"}) do
Riga 329 ⟶ 379:
config.colore_voti[voto]..";\">&thinsp;'''<tt>"..voto.."</tt>'''&thinsp;</span>"
outi.testo= config.descrizione_stato[s][voto]
out[i]= outi end
-- end
end
return out
end
 
 
function monitoraggioMonitoraggio:creaContenitore()
local prg= self:impostaRigaProgetti()
local liv= self:impostaRigaLivello()
Riga 347 ⟶ 401:
out_prg:tag("td")
:cssText("width: 35px;")
:wikitext(prg.icone[i])
end
out_prg:tag("th")
:cssText("width: 100%; text-align: center;")
Riga 376 ⟶ 431:
:done()
:tag("td")
:wikitext(t.testo) end
end
return out
end
 
 
function monitoraggioMonitoraggio:__tostring()
-- for _, s in self.categorie_errore do
-- self.categorie[#self.categorie + 1]= s end
Riga 386 ⟶ 444:
local cat= self.categorie
if err then
out= out.."<div class=\"error\">"..table.concat(err, "<br />").."</div>"
end
if cat then
if err then
cat[#cat + 1]= "[[Categoria:Errori di compilazione del template Monitoraggio]]"
end
out= out..table.concat(cat, "\n")
end
return out
end
 
 
function monitoraggioMonitoraggio:new(o)
o= {} or o
setmetatable(o, self)
self.__index= self
return o
end
 
-- FUNZIONE DI INVOKE
Riga 406 ⟶ 470:
function p.main(frame)
local args= getArgs(frame)
local out=monitoraggioMonitoraggio:new()
out:organizzaArgomenti(args)
out:assegnaLivello()
if mw.title.getCurrentTitle().namespace == 1 then
out:creaCategorie()
end
return tostring(out)
end
 
return p