Modul:WikidataAlder: Forskjell mellom sideversjoner

Fra wikisida.no
Hopp til navigering Hopp til søk
missing test, there are bugs bugs here but I don't have the time right now (bogus tests)
Tømmer siden
Linje 1: Linje 1:
local Date = require('Module:Date')._Date
local p = {}


function okProperty(prop)
-- Sjekk at prop finnes
if prop
and prop['mainsnak']
and prop['mainsnak']['datavalue']
and prop['mainsnak']['datavalue']['value']
and prop['mainsnak']['datavalue']['value']['time']
and prop['mainsnak']['datavalue']['value']['precision']
then
return true
end
return false
end
function checkForUnknownValue(prop)
-- Sjekk om vi har "ukjent verdi"
if prop
and prop['mainsnak']
and prop['mainsnak']['snaktype'] == 'somevalue'
then
return true
end
return false
end
function p.formatTime(timestamp)
    local year = tonumber(string.sub(timestamp, 2, 5))
    local month = tonumber(string.sub(timestamp, 7, 8))
    local day = tonumber(string.sub(timestamp, 10, 11))
        if string.sub(timestamp, 1, 1) == '-' then
        year = 0 - year
    end
   
    if year ~= nil and month ~= nil and day ~= nil then
    return Date(tonumber(year), tonumber(month), tonumber(day))
    else
    return nil
    end
   
end
function findBestProperty(qv, pv)
    local entity = mw.wikibase.getEntity(qv)
    if not entity then
        return
    end
    if not entity['claims'] or not entity['claims'][pv] then
        return
    end
    local prop = entity['claims'][pv]
    local i = 0
    local oki = 0
    while i < #prop do
        i = i + 1
        local rank = prop[i]['rank']
        if rank == 'preferred' then
            return prop[i]
        end
        if rank == 'normal' then
            if oki == 0 then
                oki = i
            end
        end
    end
    if oki > 0 then
        return prop[oki]
    end
end
function getDate(frame, action)
local propertyID
if action == 'born' then
propertyID = 'P569'
elseif action == 'died' then
propertyID = 'P570'
else
return '', nil
end
local qv = frame.args[1]
local prop = findBestProperty(qv, propertyID)
if not prop then
return '';
end
if checkForUnknownValue(prop) then
return 'unknown value', nil
end
if okProperty(prop) then
local timestamp = prop['mainsnak']['datavalue']['value']['time']
local precision = prop['mainsnak']['datavalue']['value']['precision']
return p.formatTime(timestamp), precision
else
return '', nil
end
end
function p.alderInfoboks(frame)
local timestampBorn, precisionBorn = getDate(frame, 'born')
local timestampDied, precisionDied = getDate(frame, 'died')
if (timestampBorn == 'unknown value' or timestampDied == 'unknown value') then
return ''
end
if (timestampBorn == nil and timestampDied == nil) or precisionBorn == nil then
return ''
end
if timestampDied == '' and precisionBorn >= tonumber(11) then
local diff = Date('currentdate') - timestampBorn
-- capture error
if diff == nil then
return ''
end
return mw.text.nowiki('(' .. diff:age('y') .. ' år)')
end
if timestampDied ~= nil and precisionDied ~= nil and (precisionBorn >= tonumber(11) and precisionDied >= tonumber(11)) then
local diff = timestampBorn - timestampDied
return mw.text.nowiki('(' .. diff:age('y') .. ' år)')
end
return ''
end
return p

Sideversjonen fra 17. apr. 2019 kl. 11:26

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: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell. 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: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Zdeněk Grygera (Q168997) 14. mai 1980 (45 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Synnøve Solemdal (Q257682) 15. mai 1989 (36 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Veronica Campbell-Brown (Q5796) 15. mai 1982 (43 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Jens Stoltenberg (Q57665) 16. mars 1959 (67 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Susann Goksør Bjerkrheim (Q2153171) 7. juli 1970 (55 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Lady Gaga (Q19848) 28. mars 1986 (40 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Arve Opsahl (Q716993) 29. april 2007 (85 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
B.B. King (Q188969) 14. mai 2015 (89 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Einar Gerhardsen (Q164346) 19. september 1987 (90 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Marie Curie (Q7186) 4. juli 1934 (66 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Isaac Newton (Q935) 31. mars 1727 (84 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Karl III Johan (Q52927) 8. mars 1844 (81 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Karl XII av Sverige (Q52934) (ikke brukt i artikkel) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Elisabeth I (Q7207) 24. mars 1603 (69 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Vladimir Lenin (Q1394) 21. januar 1924 (53 år) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Arthur Townsend (Q4800483) (ikke brukt) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell. 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: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell. 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: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell.
Pythagoras (Q10261) (ikke brukt i artikkel) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell. Wikidata har ikke nøyaktige dager, så da prøver vi ikke å regne ut alder
Ramses II (Q1523) (ikke brukt i artikkel) Skriptfeil: Modulen returnerte en nil-verdi. Det forventes at den returnerer en eksporttabell. Wikidata har ikke nøyaktige dager, så da prøver vi ikke å regne ut alder