Jump to content

Module:Dato og aldur

Frá Wikipedia, hin frælsa alfrøðin

Hetta modulið heintar føðingardagar og deyðsdagar frá Wikidata og kemur aftur við leinjaðum dato og ári, umframt at rokna út aldur út frá muninum millum hesi bæði. Dersom dødsdato ikke er oppgitt, beregner den alderen ut i fra differansen mellom fødselsdato og dagens dato.

Modulið er primert hugsað til nýtslu í infoboksum, tvs. sum ein partur av fyrimynd-kotuni, ikki sum ein partur av infoboksini í eini grein.

Dømi um føðidato
  • |føddur= {{#if:{{{føddur|{{{føðidato|}}}}}}|{{{føddur|{{{føðidato|}}}}}}|{{#invoke:Dato og aldur|bda}}}}

Um so er at parameturið |føddur= ella |føðidato= er upplýst, so verða dáta vald frá hesum. Um hesi ikki eru upplýst, so verða dáta heintað frá Wikidata. Um so er at deyðsdato ikki er upplýst á Wikidata, so verður aldur endurgivin í hesum teigi, grundað á muninum millum dagsins dato og føðidato. Úrslitið í hesum teigi verður leinkjaður og í forminum dd. mmmm áááá (xx ár), evt. dd. mmmm áááá um persónurin er deyður.

Dømi um deyðsdato
  • |deyður= {{#if:{{{deyður|{{{deyðsdato|}}}}}}|{{{deyður|{{{deyðsdato|}}}}}}|{{#invoke:Dato og aldur|dda}}}}

Um so er at parameturið |deyður= ella |deyðsdato= er upplýst, so verða dáta vald frá hesum. Um hesi bæði ikki eru upplýst, so verða dáta heintað frá Wikidata. Um so er at føðidato ikki er upplýst á Wikidata, verður einki givið aftur. Úrslitið í hesum teigi verður leinkjaður og í forminum dd. mmmm áááá (xx ár).

Error

Kunne ikke lese wikitekst fra "Module:Dato og aldur/sandkassi".


local p = {}
 
local lang = mw.getContentLanguage() 
	if not mw.wikibase then
		return ""
	end
local artikkel = mw.wikibase.getEntity()
	if not artikkel then
		return "[[Bólkur:Greinir ið mangla á Wikidata]]"
	end
local claims = artikkel.claims
	if not claims then
		return "[[Bólkur:Greinir ið mangla útsøgn á Wikidata]]"
	end
	
function p.bda(frame)
	
	local p569 = artikkel.claims.p569
	if not p569 then
		return ""
	end
	local birthdate = artikkel.claims.p569[0].mainsnak.datavalue.value["time"]
	if not birthdate then
		return ""
	end
	birth_date = string.sub(birthdate,9,12) .. '-' .. string.sub(birthdate,14,15) .. '-' .. string.sub(birthdate,17,18)
 
		local day = lang:formatDate('j. F', birth_date)
		local year = lang:formatDate('Y', birth_date)
		assert(tonumber(year), birth_date)
 
		birth_date =  day.." "..year
 		-- birth_cat = '[[Bólkur:Føðingar ' .. day .. ']][[Bólkur:Føðingar í ' .. year .. ']]'  (avventer dette)
 
		local d = os.date('!*t')
		local current_year = d.year
		local current_month = d.month
		local current_day = d.day
 
	local age
		local p570 = artikkel.claims.p570
		if not p570 then
			if tonumber(current_day) >= tonumber(string.sub(birthdate,17,18)) then
				if tonumber(current_month) >= tonumber(string.sub(birthdate,14,15)) then
					age = ' (' .. tonumber(current_year) - tonumber(string.sub(birthdate,9,12)) .. ' ár)'
				else
					age = ' (' .. tonumber(current_year) - tonumber(string.sub(birthdate,9,12)) - 1 .. ' ár)'
				end
			else
				if tonumber(current_month) > tonumber(string.sub(birthdate,14,15)) then
					age = ' (' .. tonumber(current_year) - tonumber(string.sub(birthdate,9,12)) .. ' ár)'
				else
					age = ' (' .. tonumber(current_year) - tonumber(string.sub(birthdate,9,12)) - 1 .. ' ár)'
				end
			end
		else
			age = ''
		end
	return birth_date .. age -- .. birth_cat (avventer dette)
end
 
function p.dda(frame)
	
	local p570 = artikkel.claims.p570
	if not p570 then
		return ""
	end
	local deathdate = artikkel.claims.p570[0].mainsnak.datavalue.value["time"]
	if not deathdate then
		return ""
	end
	death_date = string.sub(deathdate,9,12) .. '-' .. string.sub(deathdate,14,15) .. '-' .. string.sub(deathdate,17,18)
 
		local day = lang:formatDate('j. F', death_date)
		local year = lang:formatDate('Y', death_date)
		assert(tonumber(year), death_date)
 
		death_date = day.." "..year
 		-- death_cat = '[[Bólkur:Andlát ' .. day .. ']][[Bólkur:Andlát í ' .. year .. ']]'  (avventer dette)
 
	local age
	local birthdate = artikkel.claims.p569[0].mainsnak.datavalue.value["time"]
	if not birthdate then
		return ""
	end
		if tonumber(string.sub(deathdate,17,18)) >= tonumber(string.sub(birthdate,17,18)) then
			if tonumber(string.sub(deathdate,14,15)) >= tonumber(string.sub(birthdate,14,15)) then
				age = ' (' .. tonumber(string.sub(deathdate,9,12)) - tonumber(string.sub(birthdate,9,12)) .. ' ár)'
			else
				age = ' (' .. tonumber(string.sub(deathdate,9,12)) - tonumber(string.sub(birthdate,9,12)) - 1 .. ' ár)'
			end
		else
			if tonumber(string.sub(deathdate,14,15)) > tonumber(string.sub(birthdate,14,15)) then
				age = ' (' .. tonumber(string.sub(deathdate,9,12)) - tonumber(string.sub(birthdate,9,12)) .. ' ár)'
			else
				age = ' (' .. tonumber(string.sub(deathdate,9,12)) - tonumber(string.sub(birthdate,9,12)) - 1 .. ' ár)'
			end
		end
 
	return death_date .. age -- .. death_cat (aventer dette)
end
 
return p