Modül:Nüfus
Modül belgelemesi[oluştur]
Bu modül şu Lua modülünü kullanıyor: |
local tbl = {}
local function format_int(number)
local i, j, minus, int, fraction = tostring(number):find('([-]?)(%d+)([.]?%d*)')
-- reverse the int-string and append a comma to all blocks of 3 digits
int = int:reverse():gsub("(%d%d%d)", "%1.")
if int:sub(-1) == '.'
then
int = int:sub(1, -2)
end
-- reverse the int-string back remove an optional comma and put the
-- optional minus and fractional part back
return minus .. int:reverse():gsub("^,", "") .. fraction
end
function string:split(delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find( self, delimiter, from )
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from )
end
table.insert( result, string.sub( self, from ) )
return result
end
local function spairs(t, order)
-- collect the keys
local keys = {}
for k in pairs(t) do keys[#keys+1] = k end
-- if order function given, sort by it by passing the table and keys a, b,
-- otherwise just sort the keys
if order then
table.sort(keys, function(a, b) return order(t, a, b) end)
else
table.sort(keys)
end
-- return the iterator function
local i = 0
return function()
i = i + 1
if keys[i] then
return keys[i], t[keys[i]]
end
end
end
function tbl.nufus(frame)
local veri = require("Modül:Nüfus/veri")
local tablo = {}
local dunya_nufus = frame:expandTemplate{
title = 'Worldpop',
}
for k, v in pairs(veri) do
local nufus = v['nufus']
if v['nufus_baz_tarihi'] ~= nil then
local arr = string.split(v['nufus_baz_tarihi'], "-")
local gun = frame:expandTemplate{
title = 'Age in days',
args = {arr[1], arr[2], arr[3]}
}
nufus = nufus + (v['nufus_artisi'] * gun)
end
tablo[k] = math.floor(nufus)
end
--local bagimli_renk = '#CCCCCC'
--local sinirli_renk = '#F0E891'
--
--local res = frame:expandTemplate{
-- title = 'Lejant',
-- args = {bagimli_renk, 'Bağımlı bölge'}
-- }
--
--res = res .. frame:expandTemplate{
-- title = 'Lejant',
-- args = {sinirli_renk, 'Sınırlı tanınan ülke'}
-- }
local res = ""
res = res .. '\n'
res = res .. '{| class="wikitable sortable" width="100%"\n'
res = res .. '|-\n'
res = res .. '! Sıra\n'
res = res .. '! Ülke\n'
res = res .. '! Nüfus\n'
res = res .. '! Tarih\n'
res = res .. '! Oran\n'
res = res .. '! Notlar\n'
t = os.date("%Y-%m-%d")
local bugun = frame:expandTemplate{
title = 'Tarih',
args = {t}
}
--Dünya
res = res .. '|-\n'
res = res .. '| \n'
res = res .. '| style="font-weight: bold" | Dünya\n'
res = res .. '| style="font-weight: bold" align="right" | ' .. format_int(dunya_nufus) .. '\n'
res = res .. '| style="font-weight: bold; white-space: nowrap" align="right" | ' .. bugun .. '\n'
res = res .. '| style="font-weight: bold" align="right" | ' .. '%100\n'
res = res .. '| ' .. '[[Şablon:Worldpop|bkz.]]' .. '\n'
local i = 0
for k, v in spairs(tablo,
function(t, a, b) return tonumber(t[b]) < tonumber(t[a]) end) do
local tarih = ""
if veri[k]['nufus_baz_tarihi'] ~= nil then
tarih = bugun
else
tarih = veri[k]['tarih']
end
local ulke = frame:expandTemplate{
title = 'Bayrakülke',
args = {k}
}
if veri[k]['bagli_ulke'] ~= nil then
sira = '-'
if veri[k]['bagli_ulke'] ~= '-' then
ulke = ulke .. ' ' .. '([[' .. veri[k]['bagli_ulke'] .. ']])'
end
else
i = i + 1
sira = i
end
local oran = tonumber(string.format("%.2f", (100 * v) / dunya_nufus))
res = res .. '|-'
--if veri[k]['bagli_ulke'] ~= nil then
-- res = res .. ' style="background:'
--
-- if veri[k]['bagli_ulke'] == '-' then
-- res = res .. sinirli_renk
-- else
-- res = res .. bagimli_renk
-- end
res = res .. '"'
--end
res = res .. '\n'
res = res .. '| ' .. sira .. '\n'
res = res .. '| ' .. ulke .. '\n'
res = res .. '| align="right" | ' .. format_int(v) .. '\n'
res = res .. '| style="white-space: nowrap" align="right" | ' .. tarih .. '\n'
res = res .. '| align="right" | ' .. '%' .. oran .. '\n'
res = res .. '| <small>' .. veri[k]['kaynak'] .. '</small>\n'
end
res = res .. '|}'
return res
end
return tbl