Modul:Batang

Revisi sejak 19 Oktober 2015 03.45 oleh KIDE777 (bicara | kontrib) (Modul telah dipindahkan dari bak pasir ke '''Modul:Coutput'''.)

--Kode asli ditulis di Wikipedia Bahasa Korea oleh Jesusmas
--Fungsi untuk menggambar diagram batang horizontal.
local function drawBar (color, length, round) --Parameter yang dimasukkan (warna, nilai panjang, pembulatan: up/down)
	local t = require("Modul:Coutput")
	
	if length > 5000 then return ''		end --Jika nilai lebih dari 5000 maka tidak akan menampilkan apapun.
	if length <= 0 then return ''		end --Jika nilai kurang atau sama dengan 0 maka tidak akan menampilkan apapun.
	
	local rest_length = --Sisa nilai panjang yang akan dicetak,
		round == 'up' and  math.ceil(length) or --pembulatan ke atas, atau
		round == 'down' and math.floor(length) or --pembulatan ke bawah, atau
		math.floor(length+.5) --pembulatan ke integer terdekat jika parameter "round" kosong.
		
	while rest_length >= 100 do t:print('[[Berkas:KIDE777 Batang '):print(color):print('100.png|tautan=|]]')rest_length = rest_length - 100 end
	--while rest_length >= 50 do t:print('[[Berkas:KIDE777 Batang '):print(color):print('50.png|tautan=|]]') rest_length = rest_length - 50 end
	--while rest_length >= 30 do t:print('[[Berkas:KIDE777 Batang '):print(color):print('30.png|tautan=|]]') rest_length = rest_length - 30 end
	while rest_length >= 10 do t:print('[[Berkas:KIDE777 Batang '):print(color):print('10.png|tautan=|]]') rest_length = rest_length - 10 end
	--while rest_length >= 5 do t:print('[[Berkas:KIDE777 Batang '):print(color):print('5.png|tautan=|]]') rest_length = rest_length - 5 end
	--while rest_length >= 3 do t:print('[[Berkas:KIDE777 Batang '):print(color):print('3.png|tautan=|]]') rest_length = rest_length - 3 end	
	while rest_length >= 1 do t:print('[[Berkas:KIDE777 Batang '):print(color):print('1.png|tautan=|]]') rest_length = rest_length - 1 end		
	
	return t:printall()
end

local function bar(frame)
	local color = frame.args[1] or '무'
	local length = tonumber(frame:preprocess('{{#iferror: {{#expr:'..  frame.args[2] ..'}} | 0 }}')) or 0
	local round = frame.args.round or '' -- i. e. frame.args['round']
	return drawBar (color, length, round)
end

return {bar=bar, drawBar=drawBar}