Modul:Biodata
Utseende
function manniska(entity)
local man = nil
if not entity then
return ''
end
if not entity.claims or not entity.claims.P31 then
return ''
else
for i, j in pairs( entity.claims.P31 ) do
if j.mainsnak.snaktype == 'value' then
if j.mainsnak.datavalue.value['numeric-id'] == 5 then
man = 'människa'
end
end
end
end
return man
end
function sex(kon, entity)
local k = nil
local man = manniska(entity)
if kon then
if string.lower(kon) == "kvinna" or string.lower(kon) == "kvinnor" then
return "[[Kategori:Kvinnor]]"
end
if string.lower(kon) == "man" or string.lower(kon) == "män" then
return "[[Kategori:Män]]"
end
return "[[Kategori:" .. kon .. "]]"
else
if not entity then
return '[[Kategori:Sidan är inte ansluten till ett Wikidataobjekt]]'
else
if not entity.claims or not man then
return '[[Kategori:Wikidata anger inte att sidan handlar om en människa]]'
else
if not entity.claims.P21 then
return '[[Kategori:Wikidata saknar uppgift om kön]]'
else
local gender = nil
local rankg = nil
for i, j in pairs( entity.claims.P21 ) do
if j.mainsnak.snaktype == 'value' then
local valq = j.mainsnak.datavalue.value['numeric-id']
if valq == 6581072 then
gender = "Kvinnor"
else
if valq == 6581097 then
gender = "Män"
end
end
end
end
if gender then
return "[[Kategori:".. gender.."]]"
else
return "[[Kategori:Wikidata använder ett främmande värde för kön]]"
end
end
end
end
end
return k
end
function f1(fodd, entity)
local comcat = ''
local man = manniska(entity)
if not fodd then
if not entity then
return '[[Kategori:Sidan är inte ansluten till ett Wikidataobjekt]]'
else
if not entity.claims or not man then
return '[[Kategori:Wikidata anger inte att sidan handlar om en människa]]'
else
if not entity.claims.P569 then
return '[[Kategori:Wikidata saknar uppgift om födelsedatum]]'
else
local ar = nil
ar = data(entity.claims.P569)
comcat = ar
if ar == 'precisionsfel' then
return "[[Kategori:Fel precision i födelsedatum för att Wikidata ska kunna användas]]"
end
if ar == 'novalue' then
return '[[Kategori:Wikidata saknar uppgift om födelsedatum]]'
end
end
end
end
if comcat == 'okänt år' then
return '[[Kategori:Födda okänt år]]'
else
return '[[Kategori:Födda ' .. comcat .. ']]'
end
else
if fodd == "okänt" or fodd == "okänt år" then
comcat = "[[Kategori:Födda okänt år]]"
else
comcat = "[[Kategori:Födda " .. fodd .. "]]"
end
end
return comcat
end
function f2(avlidna, entity)
local comcat = ''
local man = manniska(entity)
if not avlidna then
if not entity then
return '[[Kategori:Sidan är inte ansluten till ett Wikidataobjekt]]'
else
if not entity.claims or not man then
return '[[Kategori:Wikidata anger inte att sidan handlar om en människa]]'
else
if not entity.claims.P570 then
return ''
else
local ar = nil
ar = data(entity.claims.P570)
comcat = ar
if ar == 'precisionsfel' then
return "[[Kategori:Fel precision i dödsdatum för att Wikidata ska kunna användas]]"
end
if ar == 'novalue' then
return ''
end
end
end
end
if comcat == 'okänt år' then
return '[[Kategori:Avlidna okänt år]]'
else
return '[[Kategori:Avlidna ' .. comcat .. ']]'
end
else
if avlidna == "okänt" or avlidna == "okänt år" then
comcat = "[[Kategori:Avlidna okänt år]]"
else
comcat = "[[Kategori:Avlidna " .. avlidna .. "]]"
end
end
return comcat
end
function data( claim )
local ar = nil
local rankg = nil
local precisiong = nil
for i, j in pairs( claim ) do
local rank = j.rank
if j.mainsnak.snaktype == 'value' then
local value = j.mainsnak.datavalue.value.time
local precision = j.mainsnak.datavalue.value.precision
if not rankg and (rank == 'preferred' or rank == 'normal' or rank == 'deprecated') then
rankg = rank
ar = value
precisiong = precision
end
if rankg == 'deprecated' and (rank == 'preferred' or rank == 'normal') then
rankg = rank
ar = value
precisiong = precision
end
if rankg == 'normal' and rank == 'preferred' then
rankg = rank
ar = value
precisiong = precision
end
else
if j.mainsnak.snaktype == 'somevalue' then
if not rankg and (rank == 'preferred' or rank == 'normal' or rank == 'deprecated') then
rankg = rank
ar = 'okänt år'
precisiong = 9
end
if rankg == 'deprecated' and (rank == 'preferred' or rank == 'normal') then
rankg = rank
ar = 'okänt år'
precisiong = 9
end
if rankg == 'normal' and rank == 'preferred' then
rankg = rank
ar = 'okänt år'
precisiong = 9
end
else
ar = 'novalue'
precisiong = 9
end
end
end
if tonumber(precisiong) < 9 then
ar = 'precisionsfel'
else
if ar and ar ~= 'okänt år' and ar ~= 'novalue' then
local ar2 = string.sub(ar, 2,12)
ar2 = tostring(tonumber(ar2))
if string.sub(ar, 1,1) == "-" then
ar2 = ar2 .. " f.Kr."
end
ar = ar2
end
end
return ar
end
local p = {}
function p.com( frame )
local pFrame = frame:getParent()
local entity = mw.wikibase.getEntityObject()
local comcat = ''
local kon = pFrame.args['kön'] or nil
local fodd = pFrame.args['född'] or pFrame.args['födda'] or nil
local avliden = pFrame.args['avlidna'] or pFrame.args['avlidna'] or pFrame.args['död'] or pFrame.args['döda'] or nil
local levande = pFrame.args['levande'] or pFrame.args['blp'] or nil
comcat = comcat .. f1(fodd, entity)
comcat = comcat .. f2(avliden, entity)
if levande then
if levande == 'möjligen' or levande == 'Möjligen' or levande == 'möjligen levande' or levande == 'Möjligen levande' then
comcat = comcat .. "[[Kategori:Möjligen levande personer]]"
else
comcat = comcat .. "[[Kategori:Levande personer]]"
end
end
comcat = comcat .. sex(kon, entity)
return comcat
end
return p