Modul:Wikidata-embeder
Udseende
require('Modul:No globals')
local p = {}
local wikibase = mw.wikibase
local lang = mw.language.getContentLanguage()
local function getQualifierId(qualifier)
if qualifier then
local first = qualifier[1]
if first.snaktype == 'value' then
return first.datavalue.value.id
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
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 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
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
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 = getQualifierId(qualifiers.P2937)
valg = getQualifierId(qualifiers.P2715)
start, startP = getQualifierTid(qualifiers.P580)
slut, slutP = getQualifierTid(qualifiers.P582)
tidspunkt, tidspunktP = getQualifierTid(qualifiers.P585)
nr = getQualifierTekst(qualifiers.P1545)
tekst = tekst .. '\n\nEmbede: ' .. vis_qid(embedeID) .. '\n'
if erstatter then tekst = tekst .. '* Erstatter: ' .. vis_qid(erstatter) .. '\n' end
if erstattet_af then tekst = tekst .. '* Erstattet af: ' .. vis_qid(erstattet_af) .. '\n' end
if kabinet then tekst = tekst .. '* Kabinet: ' .. vis_qid(kabinet) .. '\n' end
if for_ then tekst = tekst .. '* For: ' .. vis_qid(for_) .. '\n' end
if valgkreds then tekst = tekst .. '* Valgkreds: ' .. vis_qid(valgkreds) .. '\n' end
if arbejdsgiver then tekst = tekst .. '* Arbejdsgiver: ' .. vis_qid(arbejdsgiver) .. '\n' end
if arbejdsfelt then tekst = tekst .. '* Arbejdsfelt: ' .. vis_qid(arbejdsfelt) .. '\n' end
if parlamentsgruppe then tekst = tekst .. '* Parlamentsgruppe: ' .. vis_qid(parlamentsgruppe) .. '\n' end
if parlamentsperiode then tekst = tekst .. '* Parlamentsperiode: ' .. vis_qid(parlamentsperiode) .. '\n' end
if valg then tekst = tekst .. '* Valg: ' .. vis_qid(valg) .. '\n' end
if start then tekst = tekst .. '* Start: ' .. vis_tid(start, startP) .. '\n' end
if slut then tekst = tekst .. '* Slut: ' .. vis_tid(slut, slutP) .. '\n' end
if tidspunkt then tekst = tekst .. '* Tidspunkt: ' .. vis_tid(tidspunkt, tidspunktP) .. '\n' end
if nr then tekst = tekst .. '* Nr.: ' .. nr .. '\n' end
end
end
end
return tekst
end
return p