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 e per adesso la dimensione è prestabilita.
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 |
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 nell'Avanzamento tipo questo, in modo da evitare il più possibile gli errori nella visualizzazione.
--[=[ 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'-- [[categoria:Pagine con avanzamento errato]]'
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)
txtImm = (p.main(frame))
if Digit == '' or Digit == 'nil' then -- vuoto
return ''
else
return '[[File:'..txtImm..'.svg|20px]]'
end
end
return p