Modul:Småplanetnavigatør

Fra Wikipedia, den frie encyklopedi
Moduldokumentasjon

Formål[rediger kilde]

For bruk i artikler om småplaneter for å gi mulighet for navigering til forrige og neste småplanet.

Bruk[rediger kilde]

Malen {{Småplanetnavigatør}} har implementert denne modulen. Se malen dokumentasjon for bruk.

Eksempler[rediger kilde]

Eksempler på resultat kan sees i nederst i artiklene om asteroidene 2 Pallas og 10 Hygiea.

function hent(entity, property, var, i)
	if var then
		if property == 'P155' then
			return '[[' .. var .. '|◄ ' .. var .. ']] | '
		else
			return '| [[' .. var .. '|' .. var .. ' ►]]'
		end
	end
	if not entity or not entity.claims or not entity.claims[property] or not entity.claims[property][i] then
		return ''
	end

	local j = entity.claims[property][i]
	if j.mainsnak.snaktype == 'value' then
		var = 'Q' .. tostring(j.mainsnak.datavalue.value['numeric-id'])
		local label = mw.wikibase.label(var)
		if not label then
			label = 'n/a'
		end
		local sitelink = mw.wikibase.sitelink(var)
		if not sitelink then
			if property == 'P155' then
				return '◄ ' .. label .. ' | '
			else
				return '| ' .. label .. ' ►'
			end
		else
			if property == 'P155' then
				return '[[' .. sitelink .. '|◄ ' .. label .. ']] | '
			else
				return '| [[' .. sitelink .. '|' .. label .. ' ►]]'
			end
		end
		
	end

	return var

end
local p = {}

function p.nav(frame)
	local r = ''
	local pFrame = frame:getParent()
	local args = pFrame.args
	local entity = mw.wikibase.getEntityObject()
	local titel = mw.title.getCurrentTitle().text
	local entitylabel = nil
	if entity then
		entitylabel = entity:getLabel()
	end
	local na = 0
	local nb = 0
	if entity and entity.claims and entity.claims.P155 then
		na = #entity.claims.P155
	else
		na = 0
	end
	if entity and entity.claims and entity.claims.P156 then
		nb = #entity.claims.P156
	else
		nb = 0
	end
	local nm = na
	if nb > nm then
		nm = nb
	end
	local an = 1
	while an <= nm or an <= 1 do
		local var = nil
		if an == 1 then
			var = args['forrige']
		end
		local r2 = mw.text.tag('td', {align="right"}, mw.text.tag( 'b' , {},hent(entity, 'P155', var, an)))
		if an == 1 then
			if nm > 1 then
				r2 = r2 ..' ' .. mw.text.tag('td', { rowspan = tostring(nm) }, mw.text.tag( 'b' , {}, (args.namn or titel) )) .. ' '
			else
				r2 = r2 ..' ' ..  mw.text.tag('td', {}, mw.text.tag( 'b' , {}, (args.namn or entitylabel or titel) )) .. ' '
 			end
		end
		local var2 = nil
		if an == 1 then
			var2 =   args['neste']
		end
		r2 = r2 .. mw.text.tag('td', {}, mw.text.tag( 'b' , {}, hent(entity, 'P156', var2, an)))
		r = r .. mw.text.tag('tr', {}, r2 )
		an = an + 1
	end
	return mw.text.tag( 'table', {align="center"}, r)
end

function p.topp(frame)
	local r = 'Asteroider'
	local entity = mw.wikibase.getEntityObject()
	if not entity or not entity.claims or not entity.claims.P31 then
		return r
	end
	for i, j in pairs(entity.claims.P31) do
		if j.mainsnak.snaktype == 'value' then
			local var = 'Q' .. tostring(j.mainsnak.datavalue.value['numeric-id'])
			local label = mw.wikibase.label(var)
			if label == 'fjerntliggende småplaneter' then
				return 'Småplaneter'
			end
		end
	end
	return r
end

function p.list(frame)  
	local r = '*[[Jordnære objekt]]\n*[[Asteroide]]\n*[[Asteroidebeltet]]\n*[[Trojansk objekt|Trojaner]]\n*[[Damokloide]]\n*[[Kentaurer]]\n*[[Kuiperbeltet]]'
	local entity = mw.wikibase.getEntityObject()
	if not entity or not entity.claims or not entity.claims.P31 then
		return r
	end
	for i, j in pairs(entity.claims.P31) do
		if j.mainsnak.snaktype == 'value' then
			local var = 'Q' .. tostring(j.mainsnak.datavalue.value['numeric-id'])
			local label = mw.wikibase.label(var)
			if label == 'fjerntliggende småplaneter' then
				return '[[Transneptunsk objekt|TNO]]\n*[[Resonante transneptunske objekt]]\n*[[Den spredte skiven|SDO]]\n*[[E-SDO]]\n*[[Cubewano]]r\n*[[Kentaurer]]\n*[[Asteroider]]'
			end
		end
	end
	return r
end


return p