Modul:Dato og alder

Fra Wikipedia, den frie encyklopedi
Moduldokumentasjon

Denne modulen henter fødselsdatoer og dødsdatoer fra Wikidata og returnerer lenket dato og år, samt beregner alder ut i fra differansen mellom disse to. Dersom dødsdato ikke er oppgitt, beregner den alderen ut i fra differansen mellom fødselsdato og dagens dato.

Bruk[rediger kilde]

Modulen er primært tenkt brukt i infobokser, det vil si som en del av malkoden, ikke som en del av infoboksen i en artikkel.

Eksempel for fødselsdatoer
  • |født= {{#if:{{{født|{{{fødselsdato|}}}}}}|{{{født|{{{fødselsdato|}}}}}}|{{#invoke:Dato og alder|bda}}}}

Dersom parameteren |født= eller |fødselsdato= er angitt, velges data fra disse. Dersom disse to ikke er angitt, hentes data fra Wikidata. Dersom dødsdato ikke er angitt på Wikidata, vil alder returneres i dette feltet, basert på differansen mellom dagens dato og fødselsdato. Resultatet i dette feltet vil bli lenket og på formen dd. mmmm åååå (xx år), evt. dd. mmmm åååå hvis personen er død.

Eksempel for dødsdatoer
  • |død= {{#if:{{{død|{{{dødsdato|}}}}}}|{{{død|{{{dødsdato|}}}}}}|{{#invoke:Dato og alder|dda}}}}

Dersom parameteren |død= eller |dødsdato= er angitt, velges data fra disse. Dersom disse to ikke er angitt, hentes data fra Wikidata. Dersom dersom fødselsdato ikke er angitt på Wikidata, vil den ikke returnere noe. Resultatet i dette feltet vil bli lenket og på formen dd. mmmm åååå (xx år).


local p = {}
 
local lang = mw.getContentLanguage() 
	if not mw.wikibase then
		return ""
	end
local artikkel = mw.wikibase.getEntity()
	if not artikkel then
		return "[[Kategori:Artikler som ikke er koblet til Wikidata]]"
	end
local claims = artikkel.claims
	if not claims then
		return "[[Kategori:Artikler som mangler utsagn på 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 = '[[Kategori:Fødsler ' .. day .. ']][[Kategori:Fødsler i ' .. 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 = '[[Kategori:Dødsfall ' .. day .. ']][[Kategori:Dødsfall i ' .. 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