Share to:

Modul:IT

local e = {}

e.publisher="Talijanski nacionalni institut za statistiku"

local function lround(number, decimals)
	local d = decimals or 2
	return math.floor(number * 10^d + 0.5) / 10^d
end

local function percent(now, full, lang)
	if now == 0 or full == 0 then
		return "0 %"
	end
	
	local rate=now/(full/100)
	
	return lang:formatNum(tonumber(lround(rate, 1))).." %"
end

function e.get_place_codes()
	local code=mw.wikibase.getEntityIdForCurrentPage()
	local place_info
	
	if code == nil then
		return nil
	end
	
	local codes={}
	place_info=mw.wikibase.getAllStatements(code,"P635")
	if place_info then
		for i,v in ipairs(place_info) do
			code=v["mainsnak"]['datavalue']['value']
			table.insert(codes, code)
		end
	end
	
	if #codes == 0 then
		return nil
	end
	return codes
end

function e.get_line_data(data, id)
	local index=1
	local item
	while 1 do
		item=data.data[index]
		if item == nil then
			break
		end
		if item[1] == id then
			break
		end
		index=index+1
	end
	
	return item
end

function e.population_ref()
	local data=mw.ext.data.get("Italian municipality populations.tab")
	
	return e.get_ref(data)
end

function e.population(data, code)
	local record
	
	if code == nil or code == "" then
		code=e.get_place_codes()
		if code == nil then
			return nil
		end
	else
		if type(code) == "string" then
			code={code}
		end
	end
	
	for i,c in ipairs(code) do
		record = e.get_line_data(data, c)
		if record then
			return record[2]
		end
	end
	
	return ""
end

function e.year(data)
	local i_start
	local i_end
	local start
	
	local description=data.description.en
	if description == nil then
		description=data.description
	end
	i_start, i_end=string.find(description, "%(")
	start=i_start+1
	return string.sub(description, start, start+3)
end

function e.public_date(data)
	local i_start
	local i_end
	local start
	
	local description=data.description.en
	if description == nil then
		description=data.description
	end
	i_start, i_end=string.find(description, "%(")
	start=i_start+1
	return string.sub(description, start, start+9)
end

function e.year_h()
	local data=mw.ext.data.get("Italian municipality populations.tab")
	
	return e.year(data)
end

function e.density_old(args)
	local area=args.args[1]
	local code=args.args[2]
	
	local data=mw.ext.data.get("Italian municipality populations.tab")
	local population = e.population(data, code)
	
	if area == nil or population == nil then return "" end
	if area == "" then return "" end
	if area == 0 then return 0 end
	if population == 0 then return 0 end
	
	-- hr to "C" format
	local i_start
	i_start, _=string.find(area, ",")
	if i_start then
		area=string.gsub(area, "%.", "")
		area=string.gsub(area, "%,", ".")
	end
	
	local area_pop=tonumber(area)
	if area_pop == nil then return "" end
	
	local result = population/area_pop
	
	local lang=mw.language.getContentLanguage()
	return lang:formatNum(tonumber(lround(result, 0)))
end

function e.density(args)
	local code=args.args[1]
	local data=mw.ext.data.get("Italian municipality populations.tab")
	
	local area_pop
	
	if code == nil or code == "" then
		code=e.get_place_codes()
		if code == nil then
			return ""
		end
	else
		
		code={code}
	end
	
	local population = e.population(data, code)
	
	area_pop=e.area_value(code)
	
	if area_pop == nil or population == nil then return "" end
	if population == 0 then return "0" end
	
	local result = population/area_pop
	
	local lang=mw.language.getContentLanguage()
	return lang:formatNum(tonumber(lround(result, 0)))
end

function e.population_h(args)
	local code=args.args[1]
	local original=args.args[2]
	local data=mw.ext.data.get("Italian municipality populations.tab")
	
	local population = e.population(data, code)
	
	if original == nil then original = "" end
	
	if population == nil then return original end
	if population == "" then return original end
	if population == 0 then return "0" end
	
	local lang=mw.language.getContentLanguage()
	
	return lang:formatNum(population)
end

function e.get_ref(data)
	local source=data.sources
	
	local i_start
	local i_end
	
	local start
	local title
	local url
	
	-- title
	i_start, i_end=string.find(source, "''")
	start=i_start+2
	i_start, i_end=string.find(source, "''", start)
	title=string.sub(data.sources, start, i_start-1)
	title=string.gsub(title, "''", "")
	
	-- url
	i_start, i_end=string.find(source, ": ")
	start=i_start+1
	i_start, i_end=string.find(source, ": ", start)
	start=i_start+1
	i_start, i_end=string.find(source, ",", start)
	url=string.sub(data.sources, start, i_start-1)
	
	-- website
	i_start, i_end=string.find(source, "//")
	start=i_start+2
	i_start, i_end=string.find(source, "/", start)
	local website=string.sub(data.sources, start, i_start-1)
	
	-- access date
	i_start, i_end=string.find(source, "downloaded: ")
	start=i_start+12
	local acces_date=string.sub(data.sources, start, start+9)
	
	local year=e.year(data)
	
	local pdate=e.public_date(data)
	
	return "{{Cite web |date="..pdate.." |title= "..title.." |url="..url.." |website="..website.." |publisher="..e.publisher.." |access-date="..acces_date.."}}"
end

function e.etno_ref()
	local data=mw.ext.data.get("Italian municipality birthday countries – supmunicipalies.tab") -- identic for municipalies/supmunicipalies
	local ref=e.get_ref(data)
	return ref
end

function e.geo(data, code)
	local record
	
	if code == nil then
		code=e.get_place_codes()
		if code == nil then
			return nil
		end
	else
		if type(code) == "string" then
			code={code}
		end
	end
	
	for i,c in ipairs(code) do
		record = e.get_line_data(data, c)
		if record then
			return record
		end
	end
	
	return ""
end

function e.area_value(code)
	local area
	local record
	local data=mw.ext.data.get("Italian municipalities – geological data.tab")
	
	if not code then
		return ""
	end
	record = e.get_line_data(data, code[1])
	if record == nil then
		record = e.get_line_data(data, code[2])
	end
	
	if record ~= nil then
		area=record[2]
	else
		return nil
	end
	
	-- if original == nil then original = "" end -- if none dataset value then it return the value from original_template_call.
	
	if area == nil then return original end
	if area == "" then return original end
	if area == 0 then return "0" end
	
	return area
end

function e.area(args)
	local code=args.args[1]
	local original=args.args[2]
	local area
	
	if code == nil or code == "" then
		code=e.get_place_codes()
	else
		code={code}
	end
	
	area=e.area_value(code)
	
	if original == nil then original = "" end
	
	if area == nil then return original end
	if area == "" then return original end
	if area == 0 then return "0" end
	
	local lang=mw.language.getContentLanguage()
	
	return lang:formatNum(tonumber(lround(area, 1)))
end

function e.area_ref()
	local data=mw.ext.data.get("Italian municipalities – geological data.tab")
	
	return e.get_ref(data)
end

function e.alti(args)
	local code=args.args[1]
	local original=args.args[2]
	local area
	local record
	local data=mw.ext.data.get("Italian municipalities – geological data.tab")
	
	if code == nil or code == "" then
		code=e.get_place_codes()
		if code == nil then
			return ""
		end
	else
		if type(code) == "string" then
			code={code}
		end
	end
	
	for i,c in ipairs(code) do
		record = e.get_line_data(data, c)
		if record then
			break
		end
	end
	
	area=record[3]
	
	do return area end
	
	if original == nil then original = "" end
	
	if area == nil then return original end
	if area == "" then return original end
	if area == 0 then return "0" end
	
	local lang=mw.language.getContentLanguage()
	
	return lang:formatNum(lang:formatNum(tonumber(lround(area, 1))))
end

function e.table_list(args)
	local encoded=args.args[1]
	local ret=""
	
	local data_popul=mw.ext.data.get("Italian municipality populations.tab")
	local data_geo=mw.ext.data.get("Italian municipalities – geological data.tab")
	
	local lang=mw.language.getContentLanguage()
	
	local popul
	local area
	local area_record
	
	local records=mw.text.split(encoded, ";", true)
	
	for _,cols in ipairs(records) do
		ret=ret.."<tr>"
		
		local columns=mw.text.split(cols, "::", true)
		
		if columns[2] then ret=ret.."<td>"..columns[2].."</td>" else ret=ret.."<td></td>" end
		if columns[3] then ret=ret.."<td>"..columns[3].."</td>" else ret=ret.."<td></td>" end
		
		local codes=mw.text.split(columns[1], ",", true)

		area=nil
		popul=nil
		
		for _,code in ipairs(codes) do
			popul=e.population(data_popul, code)
			if popul then
				break
			end
		end
		
		for _,code in ipairs(codes) do
			area_record=e.geo(data_geo, code)
			if area_record then
				area=area_record[2]
			end
		end
		
		if area then
			ret=ret.."<td>"..lang:formatNum(tonumber(lround(area))).."</td>"
		else
			ret=ret.."<td></td>"
		end
		
		if popul then
			ret=ret.."<td>"..lang:formatNum(popul).."</td>"
			--ret=ret.."<td>"..lang:formatNum(tonumber(lround(popul))).."</td>"
		else
			ret=ret.."<td></td>"
		end
		
		ret=ret.."</tr>"
	end
	
	return ret
end

return e

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya