Modul:Astronomilenker

local genitiv = require('Modul:Genitiv')._genitiv
local entity = mw.wikibase.getEntityObject()
claims = {}
if entity then
	claims = entity.claims
end
--[[ I denne oversikten er egenskaps-ID-en først («P###»),
	etter den kommer betegnelsen som er en del av lenka,
	og så teksten som beskriver hvilket nettsted det er på,
	og til slutt språkkoden for nettstedet. Formen er dermed:
		{ "EgenskapsID", "lenkebetegnelse", "lenkebeskrivelse", "språkkode" },
	]] 
local oversikt = {
	{ "P716", "baneparametre ", "hos [[Jet Propulsion Laboratory|JPL Small-Body Database]]", "engelsk" },
	{ "P1296", "oppføring ", "hos Gran Enciclopèdia Catalana", "spansk" },
}

local function etikett()
	if not entity then
		label = mw.title.getCurrentTitle().text
	else
		label = mw.wikibase.label(entity.id) or mw.title.getCurrentTitle().text
	return genitiv(label)
	end
end

local p = {}

function p.astronomilenker(frame)
	local lenker = {}
	for _,v in pairs(oversikt) do
		local prop = v[1]
		local text = v[2]
		local desc = v[3]
		local lang = v[4]
		if claims then
			if claims[prop] and claims[prop][1] and claims[prop][1].mainsnak.datavalue then
				formaturlp = mw.wikibase.getEntity(prop).claims['P1630']
				if formaturlp and formaturlp[1] and formaturlp[1].mainsnak.datavalue then
					formaturl = formaturlp[1].mainsnak.datavalue.value
					lenker[#lenker+1] = "* " .. frame:expandTemplate{ title="Språkikon", args = { [1] = lang, [2] = lang } } .. " [" .. string.gsub(formaturl, "$1", claims[prop][1].mainsnak.datavalue.value) .. " " .. etikett() .. " " .. text .. "] " .. desc
				end
			end
		end
	end
	if entity then
		if #lenker == 0 then
			lenker[1+#lenker] = ""
			lenker[1+#lenker] = '[[Kategori:Artikler uten astronomilenker fra Wikidata]]'
		else
			lenker[1+#lenker] = '[[Kategori:Artikler med astronomilenker fra Wikidata]]'
		end
	else
		lenker[1+#lenker] = "''Artikkelen mangler oppslag i Wikidata!''"
		lenker[1+#lenker] = '[[Kategori:Artikler med astronomilenker og uten kobling til Wikidata]]'
	end
	return table.concat(lenker,"\n")
end

return p