Modul:Dato og alder
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)
.
- Modul:Dato og alder • Modul:Dato og alder/sandkasse • forskjellig (diff)
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