Modul:WikidataAlder: Forskjell mellom sideversjoner

Fra wikisida.no
Hopp til navigering Hopp til søk
Ny side: local p = {} local function frameargs(frame) local args = frame.args if args[1] == nil then local pFrame = frame:getParent(); args = pFrame.args; for k,v...
 
mIngen redigeringsforklaring
Linje 53: Linje 53:
         local birth_claim = entity['claims']['P569']
         local birth_claim = entity['claims']['P569']
         local death_claim = entity['claims']['P570']
         local death_claim = entity['claims']['P570']
if not death_claim or birth_claim then
if not death_claim or not birth_claim then
return ""
return ""
end
end

Sideversjonen fra 26. sep. 2015 kl. 21:52

Formål

Å presentere datoer fra Wikidata.

Bruk

Modulen brukes ved å legge inn en av:

{{#invoke:WikidataAlder|alderInfoboks|qv=Qxxx}}

i en mal.

Feilmelding

Om du ser en feilmelding i en infoboks angående fødsels- eller dødsdato, dobbeltsjekk at fødsels- eller dødsdato er riktig på Wikidata. Dette kan forekomme bl.a. av ikke-eksisterende datoer som ved skuddår.

Eksempler

Artikkel Manuell bruk av maler
{{Fødselsdato og alder}} / {{Dødsdato og alder}}
Modul:WikidataAlder
({{ #invoke:WikidataAlder | alderInfoboks }}
Kommentar
Sverige (Q34) (har ikke, siden dette ikke er en person) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke. Har ikke fødsels- eller dødsdatoer, så da prøver vi ikke å regne ut alder
Bjørn Ousland (Q4919913) 14. mai 1959 (66 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Zdeněk Grygera (Q168997) 14. mai 1980 (45 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Synnøve Solemdal (Q257682) 15. mai 1989 (36 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Veronica Campbell-Brown (Q5796) 15. mai 1982 (43 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Jens Stoltenberg (Q57665) 16. mars 1959 (67 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Susann Goksør Bjerkrheim (Q2153171) 7. juli 1970 (55 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Lady Gaga (Q19848) 28. mars 1986 (40 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Arve Opsahl (Q716993) 29. april 2007 (85 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
B.B. King (Q188969) 14. mai 2015 (89 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Einar Gerhardsen (Q164346) 19. september 1987 (90 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Marie Curie (Q7186) 4. juli 1934 (66 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Isaac Newton (Q935) 31. mars 1727 (84 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Karl III Johan (Q52927) 8. mars 1844 (81 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Karl XII av Sverige (Q52934) (ikke brukt i artikkel) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Elisabeth I (Q7207) 24. mars 1603 (69 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Vladimir Lenin (Q1394) 21. januar 1924 (53 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Arthur Townsend (Q4800483) (ikke brukt) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke. Wikidata har ukjent verdi for dødsdato, så da skal vi ikke regne ut alder.
Julius Cæsar (Q1048) (ikke brukt, men manuelt oppgitt til 55 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke. Wikidata har ikke nøyaktige dager, så da prøver vi ikke å regne ut alder
Aleksander den store (Q8409) (ikke brukt, men manuelt oppgitt til 32 år) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke.
Pythagoras (Q10261) (ikke brukt i artikkel) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke. Wikidata har ikke nøyaktige dager, så da prøver vi ikke å regne ut alder
Ramses II (Q1523) (ikke brukt i artikkel) Skriptfeil: Funksjonen «alderInfoboks» eksisterer ikke. Wikidata har ikke nøyaktige dager, så da prøver vi ikke å regne ut alder

local p = {}

local function frameargs(frame)
    local args = frame.args
    if args[1] == nil then
        local pFrame = frame:getParent();
        args = pFrame.args;
        for k,v in pairs( frame.args ) do
            args[k] = v;
        end
     end
     return args['qv'],args['pv']
end

function splitTimestamp(timestamp)
	local aar = tonumber(string.sub(timestamp, 2, 5))
	local maande = tonumber(string.sub(timestamp, 7, 8))
	local dag = tonumber(string.sub(timestamp, 10, 11))
        if string.sub(timestamp, 1, 1) == '-' then
		aar = 0 - aar
 	end
	return aar,maande,dag
end

function presisjon(birthtimestamp, birthprecision, deathtimestamp, deathprecision)
	local birthday, birthmonth, birthyear = splitTimestamp(birthtimestamp)
	local deathday, deathmonth, deathyear = splitTimestamp(deathtimestamp)
	if birthprecision or deathprecision == 11 then
		local age = deathyear - birthyear
                if deathmonth < birthmonth or deathday < birthday then
                        age = age - 1
                end
                return '('..age..' år)'
	end
    if birthprecision or deathprecision == 10 then
		local age = deathyear - birthyear
                if deathmonth < birthmonth then
                        age = age - 1
                end
                return '('..age..' år)'		
    end
    if birthprecision or deathprecision == 9 then
		local age = deathyear - birthyear
		local age1 = age - 1
                return '('..age1..'-'..age..' år)'
	end
    return ''
end

function p.frawikidata(frame)
        local qv,pv = frameargs(frame)
	local entity = mw.wikibase.getEntity(qv)
        local birth_claim = entity['claims']['P569']
        local death_claim = entity['claims']['P570']
	if not death_claim or not birth_claim then
		return ""
	end
        if birth_claim['mainsnak']['snaktype'] ~= 'value' or death_claim['mainsnak']['snaktype'] ~= 'value' then
        	return ""
        end

        local birthtimestamp = birth_claim['mainsnak']["datavalue"]["value"]["time"]
	local birthprecision = birth_claim['mainsnak']["datavalue"]["value"]["precision"]
        local deathtimestamp = death_claim['mainsnak']["datavalue"]["value"]["time"]
	local deathprecision = death_claim['mainsnak']["datavalue"]["value"]["precision"]
	return presisjon(birthtimestamp, birthprecision, deathtimestamp, deathprecision)
end

return p