Modul:Popis stanovništva/unos

Izvor: Wikipedija
Dokumentacija modula[vidi] [uredi] [povijest] [osvježi]

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