Modulo:ArrotondoPercentuale

Da Wikiversità, l'apprendimento libero.

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