Modul:Wikidatahelper
Utseende
Dokumentation [visa] [redigera] [historik] [rensa sidcachen]
local p = {}
--[[
Den här modulen innehåller hjälpfunktioner för Wikidata som inte används i artiklar direkt eller via mallar utan på diskussions- och projektsidor.
]]
function tablesize(T)
local n = 0
for _ in pairs(T) do n = n + 1 end
return n
end
--[[
wdmatrix, skriver ut en tabell med länkar till artiklar för angivna wikidataobjekt på angivna språk
samt uppgift om hur många språk som har länkar till objekten
parametrar
==========
objects: (obligatorisk) en kommaseparerad lista med qid
langs: (obligatorisk) en kommaseparerat lista med språkkoder
exempel
=======
{{#invoke:Wikidatahelper|wdmatrix|objects=Q210723,Q187140,Q2100893,Q18451251,Q4876106,Q4876107,Q16839444,Q386215|langs=en,es,de,sv}}
]]
function p.wdmatrix(frame)
local langs = frame.args['langs']
local langstable = {}
if langs then langstable = mw.text.split(langs,',') end
local nlangs = tablesize(langstable)
local objs = frame.args['objects']
local objstable = {}
if objs then objstable = mw.text.split(objs,',') end
local nobjs = tablesize(objstable)
local sitelinks = {}
local res = '{| class="wikitable"\n|-\n'
res = res .. '!colspan=2| !!colspan=' .. nlangs+1 .. '|Språkutgåvor\n|-\n!Wikidataobjekt||Etikett||#'
for j = 1,nlangs do res = res .. '!!' .. langstable[j] .. 'wiki' end
for i = 1,nobjs do
local entity = mw.wikibase.getEntity(objstable[i]);
if entity then
local n = 0
if entity.sitelinks then n = tablesize(entity.sitelinks) end
res = res .. '\n|-\n'
res = res .. '| [[:d:' .. objstable[i] .. ']] || ' .. (entity:getLabel() or '-') .. ' || align="right" |' .. n
for j = 1,nlangs do
local link = '-'
if entity.sitelinks then
for _, q in pairs(entity.sitelinks) do
if q.site == langstable[j]..'wiki' then
link = '[[:' .. langstable[j] .. ':' .. entity:getSitelink(q.site) .. '|' .. entity:getSitelink(q.site) .. ']]'
end
end
end
res = res .. '||' .. link
end
end
end
res = res .. '\n|}'
return res
end
return p