Modulo:ArrotondoPercentuale
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:ArrotondoPercentuale/man (modifica · cronologia)
Sandbox: Modulo:ArrotondoPercentuale/sandbox (modifica · cronologia) · Test: Modulo:ArrotondoPercentuale/test (modifica · cronologia · Esegui)
Questo modulo serve per correggere per eccesso o per difetto la percentuale di completamento dei moduli, qual ora venga scritto il {{Avanzamento}} con un parametro che altrimenti non sarebbe valido.
Sintassi
Uso diretto
{{#Invoke:ArrotondoPercentuale|main}}
Uso tramite template
{{#Invoke:ArrotondoPercentuale|main|{{{1}}}}}
Esempio
Vedremo come esempio l'uso diretto: {{#Invoke:ArrotondoPercentuale|main|14}}
e {{#Invoke:ArrotondoPercentuale|main|87%}}
daranno come risultato: 25 e 75%, questo perché 14 è più vicino a 25 che alla categoria inferiore ( 00 ), mentre 87% è più vicino alla categoria inferiore, cioè 75% che a quella superiore, cioè 100%.
funzione per le immagini
Se il vostro scopo è quello di usarlo per inserire le iconcine di avanzamento, la funzione da richiamare è {{#Invoke:ArrotondoPercentuale|immagine|''n''}}
dove "n" è il numero da arrotondare.
- Esempio
{{#Invoke:ArrotondoPercentuale|immagine|74%}}
- restituirà
- che è l'arrotondamento per eccesso a 75%
Nota: a differenza della funzione principale, le immagini necessitano del segno di percentuale.
suddivisioni
Tutti i valori si intendono implicitamente compresi
da | 0 | a | 12 | → | 00 |
da | 13 | a | 37 | → | 25 |
da | 38 | a | 62 | → | 50 |
da | 63 | a | 99 | → | 75 |
100 | → | 100 |
Parametri facoltativi
Il modulo accetta anche 2 parametri facoltativi:
px
per modificare la dimensione dell'immagine (se non specificato, l'immagine verrà ridimensionata a 20px);txt
per inserire la discascalia che appare quando si posiziona la freccia del mose sull'immagine. Usando {{!}} al posto del pipe( "|" ) è possibile passare parametri aggiunvi come ad asempio "destra" per allineare a destra l'immagine o "bordo" per rachiudere l'immagine in un riquado.
Funzione pratica
Questo modulo è stato pensato per essere usato con il {{Avanzamento}} in modo che restituisca sempre un valore corretto, anche se un utente aggiungesse un parametro non contemplato negli avanzamenti, in modo da evitare il più possibile gli errori dello script JS.
Richiamare la funzione all'interno di un altro modulo
Se intendi usare la funzione main in un altro modulo Lua, devi prima caricarlo e trasformarlo in una variabile
local mArrotondo = require('Modulo:ArrotondoPercentuale')
Quindi supponendo di voler chiamare arrotondo la variabile, basta inserire la sintassi seguente all'interno della funzione che dovrà utilizzarlo:
arrotondo = mArrotondo.main(frame)
A questo punto basterà utilizzare soltanto la variabile arrotondo
e il primo parametro del template verrà processato e arrotondato.
Per un esepio pratico vedere il Modulo:Avanzamento
--[=[ Modulo per arrotondare per eccesso o per difetto una percentuale
da [[it:b:Modulo:ArrotondoPercentuale]] di [[user:Wim b]] ]=]
local p = {}
function p.main(frame)
local arg1 = frame.args[1]
-- mantiene solo i numeri, per la compatibilità con "100%" che altrimenti verrebbe
-- interpretato "= 1" e quandi < 12 (= 00%)
Digit = mw.ustring.gsub(arg1, '%D', '')
local NoDigit = mw.ustring.gsub(arg1, '%d', '') -- cancella tutti i numeri e tiene solo l'eventuale segno di percentuale
local result
if Digit == '' or Digit == 'nil' then -- vuoto. "nil" è resente come parametro di default nel template, altrimenti dava "1" quando vuoto
return 'percentuale lasciata vuota'
elseif Digit == '100' then -- 100% si usa solo se è specificato il 100%
result = '100'
elseif Digit <= '99' and Digit >= '63' then -- 75%
result = '75'
elseif Digit <= '62' and Digit >= '38' then -- 50%
result = '50'
elseif Digit <= '37' and Digit >= '13' then -- 25%
result = '25'
else -- 00%
result = '00'
end
return result ..''.. NoDigit
end
function p.immagine(frame)
imagePixel = frame.args['px'] or '20px'
imageTxt = frame.args['txt'] or ''
txtImm = (p.main(frame))
if Digit == '' or Digit == 'nil' then -- vuoto
return ''
else
return '[[File:'..txtImm..'.svg|'..imagePixel..'|'..imageTxt..']]'
end
end
return p