Modul:Popis stanovništva/unos
Izgled
Modul:Popis stanovništva/ZGŽ/Dugo Selo
local naselje = {} naselje['QB0000'] = { ime = 'Andrilovec', popis1857 = '232', popis1869 = '286', popis1880 = '266', popis1890 = '303', popis1900 = '346', popis1910 = '401', popis1921 = '363', popis1931 = '343', popis1948 = '338', popis1953 = '329', popis1961 = '303', popis1971 = '307', popis1981 = '285', popis1991 = '261', popis2001 = '289', popis2011 = '286', popis2021 = '284', povrsina = '', } naselje['QB001'] = { ime = 'Donje Dvorišće', popis2001 = '', popis2011 = '188', popis2021 = '172', povrsina = '', } naselje['QB002'] = { ime = 'Dugo Selo', popis1857 = '603', popis1869 = '679', popis1880 = '752', popis1890 = '1060', popis1900 = '1409', popis1910 = '1714', popis1921 = '1642', popis1931 = '1814', popis1948 = '1813', popis1953 = '2074', popis1961 = '2830', popis1971 = '3848', popis1981 = '5471', popis1991 = '6508', popis2001 = '8880', popis2011 = '10453', popis2021 = '11097', povrsina = '', } naselje['QB003'] = { ime = 'Kopčevec', popis1857 = '92', popis1869 = '84', popis1880 = '81', popis1890 = '107', popis1900 = '124', popis1910 = '144', popis1921 = '142', popis1931 = '131', popis1948 = '117', popis1953 = '137', popis1961 = '189', popis1971 = '226', popis1981 = '280', popis1991 = '351', popis2001 = '624', popis2011 = '1093', popis2021 = '1060', povrsina = '', } naselje['QB004'] = { ime = 'Kozinščak', popis1857 = '131', popis1869 = '125', popis1880 = '131', popis1890 = '178', popis1900 = '191', popis1910 = '241', popis1921 = '221', popis1931 = '206', popis1948 = '192', popis1953 = '172', popis1961 = '185', popis1971 = '282', popis1981 = '464', popis1991 = '749', popis2001 = '1176', popis2011 = '1345', popis2021 = '1330', povrsina = '', } naselje['QB005'] = { ime = 'Leprovica', popis1857 = '237', popis1869 = '252', popis1880 = '262', popis1890 = '291', popis1900 = '315', popis1910 = '371', popis1921 = '359', popis1931 = '376', popis1948 = '307', popis1953 = '301', popis1961 = '296', popis1971 = '268', popis1981 = '241', popis1991 = '212', popis2001 = '261', popis2011 = '254', popis2021 = '252', povrsina = '', } naselje['QB006'] = { ime = 'Lukarišće', popis1857 = '123', popis1869 = '136', popis1880 = '128', popis1890 = '158', popis1900 = '200', popis1910 = '206', popis1921 = '179', popis1931 = '168', popis1948 = '189', popis1953 = '191', popis1961 = '202', popis1971 = '299', popis1981 = '353', popis1991 = '579', popis2001 = '896', popis2011 = '1020', popis2021 = '1007', povrsina = '', } naselje['QB007'] = { ime = 'Mala Ostrna', popis1857 = '230', popis1869 = '206', popis1880 = '222', popis1890 = '278', popis1900 = '280', popis1910 = '313', popis1921 = '305', popis1931 = '297', popis1948 = '266', popis1953 = '254', popis1961 = '233', popis1971 = '196', popis1981 = '197', popis1991 = '190', popis2001 = '343', popis2011 = '325', popis2021 = '238', povrsina = '', } naselje['QB008'] = { ime = 'Prozorje', popis1857 = '221', popis1869 = '247', popis1880 = '287', popis1890 = '319', popis1900 = '407', popis1910 = '391', popis1921 = '356', popis1931 = '396', popis1948 = '342', popis1953 = '306', popis1961 = '295', popis1971 = '254', popis1981 = '251', popis1991 = '223', popis2001 = '319', popis2011 = '521', popis2021 = '433', povrsina = '', } naselje['QB009'] = { ime = 'Puhovo', popis1857 = '23', popis1869 = '27', popis1880 = '41', popis1890 = '47', popis1900 = '50', popis1910 = '67', popis1921 = '53', popis1931 = '65', popis1948 = '66', popis1953 = '69', popis1961 = '85', popis1971 = '88', popis1981 = '177', popis1991 = '286', popis2001 = '469', popis2011 = '710', popis2021 = '667', povrsina = '', } naselje['QB10'] = { ime = 'Velika Ostrna', popis1857 = '202', popis1869 = '229', popis1880 = '253', popis1890 = '319', popis1900 = '372', popis1910 = '446', popis1921 = '435', popis1931 = '424', popis1948 = '458', popis1953 = '463', popis1961 = '478', popis1971 = '451', popis1981 = '473', popis1991 = '610', popis2001 = '1043', popis2011 = '1271', popis2021 = '1136', povrsina = '', } return naselje
local p = {}
-- TODO naselja s velikim slovima su općine
-- upis općina
-- provjera da polje sadrži broj
local godine = {1857, 1869, 1880, 1890, 1900, 1910, 1921, 1931, 1948, 1953, 1961, 1971, 1981, 1991, 2001}
function sorted_iter(t)
local i = {}
for k in next, t do
table.insert(i, k)
end
table.sort(i, function(a, b) return a > b end)
return function()
local k = table.remove(i)
if k ~= nil then
return k, t[k]
end
end
end
function mysplit (inputstr, sep)
if sep == nil then
sep = "%s"
end
local t={}
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
table.insert(t, str)
end
return t
end
function p.start()
local args = mw.getCurrentFrame().args
local zupanija = args['1']
local naselje = args['2']
local tekst = args['tekst']
local tablica = require('Modul:Popis stanovništva/' .. zupanija .. '/' .. naselje) or 0
local data = parseTekst(tekst)
local sizeFlag = provjeriPodatke(data)
if sizeFlag == 0 then
mw.log('Provjera u redu!')
else
return 'Pogreška: sva polja u unosu moraju imati 16 stupaca'
end
local tablica = dodajPodatke(tablica, data)
return ispis(tablica, zupanija, naselje)
end
function parseTekst(tekst)
tekst = mysplit(tekst, '\n') -- jedna linija po indeksu tablice
for k, v in pairs(tekst) do
tekst[k] = mysplit(v, '\t')
end
return tekst
end
function provjeriPodatke(data)
local sizeFlag = 0
for k, v in pairs(data) do
if table.getn(v) ~= 16 then
sizeFlag = 1
end
end
return sizeFlag
end
function dodajPodatke(tablica, data)
for _, tv in pairs(tablica) do --QB, podatci
for _, dv in pairs(data) do -- indeks, (mjesto, brojevi po godinama)
if dv[1] == tv.ime then
-- ubaci podatke
for gk, gv in pairs(godine) do
tv['popis'.. godine[gk]] = dv[gk+1]
end
end
end -- end for data
end -- end for tablica
return tablica
end
function getNumber(txt)
local str = ""
string.gsub(txt,"%d+",function(e) str = str .. e end)
return str;
end
function ispis(tablica, zupanija, naselje)
local retval = '[[Modul:Popis stanovništva/' .. zupanija .. '/' .. naselje ..']]'
.. '\n<pre>'
.. 'local naselje = {}\n\n'
local kopija = {}
for k, v in pairs(tablica) do
local oldK = k
local keyVal = tonumber(getNumber(k))
if string.match(k, "QB") or keyVal < 99 then
local paddedVal = string.format("%02d", keyVal)
local newK = k:gsub(keyVal, paddedVal)
mw.log('key change', oldK, newK)
kopija[newK] = v
tablica[oldK] = nil
end
end
local substCheck = mw.isSubsting()
for k, v in sorted_iter(kopija) do
if substCheck then
retval = retval .. "naselje[\'" .. k .. "\'] = {\n"
else retval = retval .. "naselje" .. mw.text.nowiki("[\'" .. k .. "\']") .. ' = {\n'
end
for kk, vv in sorted_iter(v) do
if substCheck then
retval = retval .. "\t" .. kk .. " = " .. "\'" .. vv .. "\'" .. "," .. '\n'
else retval = retval .. "\t" .. kk .. " = " .. mw.text.nowiki("\'" .. vv .. "\'" .. ",") .. '\n'
end
end
retval = retval .. '}\n\n'
end
retval = retval .. '\nreturn naselje\n</pre>'
return retval
end
return p