Modul:Wikidata-embeder
Udseende
require('Modul:No globals')
local p = {}
local wikibase = mw.wikibase
local lang = mw.language.getContentLanguage()
local function vis_qid(qid)
local label = mw.wikibase.getLabel(qid)
local sitelink = mw.wikibase.getSitelink(qid)
if sitelink then
label = '[[' .. sitelink .. '|' .. label .. ']]'
end
return label
end
local function vis_tid(tid, prec)
if prec == 9 then -- years
return string.sub(tid, 2, 5)
elseif prec == 10 then -- months
return lang:formatDate('F" "Y', tid)
elseif prec == 11 then -- days
return lang:formatDate('j." "F" "Y', tid)
end
return tid .. '(præcision: ' .. prec .. ')'
end
local function getQualifierId(qualifier)
if qualifier then
local first = qualifier[1]
if first.snaktype == 'value' then
return vis_qid(first.datavalue.value.id), first.datavalue.value.id
elseif first.snaktype == 'novalue' then
return 'ingen'
end
end
end
local function getQualifierTid(qualifier)
if qualifier then
local first = qualifier[1]
if first.snaktype == 'value' then
return first.datavalue.value.time, first.datavalue.value.precision
end
end
end
local function getQualifierTekst(qualifier)
if qualifier then
mw.logObject(qualifier)
local first = qualifier[1]
if first.snaktype == 'value' then
return first.datavalue.value
end
end
end
function p.embeder(frame)
local args = (frame == mw.getCurrentFrame()) and frame:getParent().args or frame.args
local qid = args.q or mw.wikibase.getEntilotyIdForCurrentPage()
if not qid then
return ''
end
local p39 = wikibase.getBestStatements(qid, 'P39')
local tekst = ''
for _, embede in pairs(p39) do
local embedeID = (embede.mainsnak.snaktype == "value") and embede.mainsnak.datavalue.value.id or nil
local erstatter
local erstattet_af
local kabinet
local organisation
local for_
local start, startP
local slut, slutP
local tidspunkt, tidspunktP
local valgkreds
local arbejdsgiver
local arbejdsfelt
local parlamentsgruppe
local parlamentsperiode, parlamentsperiodeId
local repraesenterer
local valg
local nr
if embedeID then
local qualifiers = embede.qualifiers
if qualifiers then
erstatter = getQualifierId(qualifiers.P1365)
erstattet_af = getQualifierId(qualifiers.P1366)
kabinet = getQualifierId(qualifiers.P5054)
organisation = getQualifierId(qualifiers.P2389)
for_ = getQualifierId(qualifiers.P642)
valgkreds = getQualifierId(qualifiers.P768)
arbejdsgiver = getQualifierId(qualifiers.P108)
arbejdsfelt = getQualifierId(qualifiers.P101)
parlamentsgruppe = getQualifierId(qualifiers.P4100)
parlamentsperiode, parlamentsperiodeId = getQualifierId(qualifiers.P2937)
valg = getQualifierId(qualifiers.P2715)
repraesenterer = getQualifierId(qualifiers.P1268)
start, startP = getQualifierTid(qualifiers.P580)
slut, slutP = getQualifierTid(qualifiers.P582)
tidspunkt, tidspunktP = getQualifierTid(qualifiers.P585)
nr = getQualifierTekst(qualifiers.P1545)
if parlamentsperiode then
if not start then
local s = wikibase.getBestStatements(parlamentsperiodeId, 'P571')
local first = s[1]
if first and first.mainsnak.snaktype == "value" then
start = first.mainsnak.datavalue.value.time
startP = first.mainsnak.datavalue.value.precision
end
end
if not slut then
local s = wikibase.getBestStatements(parlamentsperiodeId, 'P576')
local first = s[1]
if first and first.mainsnak.snaktype == "value" then
slut = first.mainsnak.datavalue.value.time
slutP = first.mainsnak.datavalue.value.precision
end
end
end
tekst = tekst .. '\n\nEmbede: ' .. vis_qid(embedeID)
if for_ then
tekst = tekst .. ' for ' .. for_
end
tekst = tekst .. '\n'
if nr then tekst = tekst .. '* Nr.: ' .. nr .. '\n' end
if erstatter then tekst = tekst .. '* Erstatter: ' .. erstatter .. '\n' end
if erstattet_af then tekst = tekst .. '* Erstattet af: ' .. erstattet_af .. '\n' end
if kabinet then tekst = tekst .. '* Kabinet: ' .. kabinet .. '\n' end
if valgkreds then tekst = tekst .. '* Valgkreds: ' .. valgkreds .. '\n' end
if arbejdsgiver then tekst = tekst .. '* Arbejdsgiver: ' .. arbejdsgiver .. '\n' end
if arbejdsfelt then tekst = tekst .. '* Arbejdsfelt: ' .. arbejdsfelt .. '\n' end
if parlamentsgruppe then tekst = tekst .. '* Parlamentsgruppe: ' .. parlamentsgruppe .. '\n' end
if parlamentsperiode then tekst = tekst .. '* Parlamentsperiode: ' .. parlamentsperiode .. '\n' end
if repraesenterer then tekst = tekst .. '* Repræsenterer: ' .. repraesenterer .. '\n' end
if valg then tekst = tekst .. '* Valg: ' .. valg .. '\n' end
if start then
if slut then
tekst = tekst .. '* Tid: ' .. vis_tid(start, startP) .. ' – ' .. vis_tid(slut, slutP) .. '\n'
else
tekst = tekst .. '* Start: ' .. vis_tid(start, startP) .. '\n'
end
elseif tidspunkt then
tekst = tekst .. '* Tidspunkt: ' .. vis_tid(tidspunkt, tidspunktP) .. '\n'
end
end
end
end
return tekst
end
return p