Aller au contenu

Module:Liens VizieR

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 30 novembre 2015 à 17:28 et modifiée en dernier par Zebulon84 (discuter | contributions) (correction url pour paramètre entré manuellement). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

Fonctions exportables :

  • VizieR(frame) – retourne une liste de liens vers la base de catalogues d'étoiles VizieR du Centre de données astronomiques de Strasbourg. Les références dans les différent catalogues peuvent être transmis au modèle, ou récupérés sur Wikidata (paramètre entity pour tester sur une autre page)

Autres fonctions :

  • getP528( entity ) – retourne une liste de chaine correspondant aux valeurs de la propriété P528 de l'élément wikidata entity.
  • findInList( str, list ) – retourne le premier élément de list commençant par str (mot entier) ainsi que le complément de str.

Modules externes et autres éléments dont ce module a besoin pour fonctionner :

Exemples

p.VizieR{ entity = 'Q14265' } retourne : Erreur de script : la fonction « VizieR » n’existe pas.

local p = {}
local Outils = require( 'Module:Outils' )

local baseUrl = 'http://vizier.u-strasbg.fr/viz-bin/VizieR-S?'
local catalogList = {
	{ name = 'ADS', int = "Catalogue d'étoiles doubles Aitken" },
	{ name = 'AG', int = "Catalogue AGK" },
	{ name = 'BD', int = "Bonner Durchmusterung" },
	{ name = 'CCDM', int = "Catalogue de composantes d'étoiles doubles et multiples" },
	{ name = 'CD', int = "Córdoba Durchmusterung" },
	{ name = 'CPD', int = "Cape Photographic Durchmusterung" },
	{ name = 'FK5', int = "Fundamental Katalog" },
	{ name = 'G', int = "Catalogue Giclas" },
	{ name = 'GC', int = "Boss General Catalogue" },
	{ name = 'GJ', int = "Catalogue Gliese" },
	{ name = 'HD', int = "Catalogue Henry Draper" },
	{ name = 'HIC', int = "HIC" },
	{ name = 'HIP', int = "Catalogue Hipparcos" },
	{ name = 'HR', int = "Catalogue HR" },
	{ name = 'IRAS', int = "Infrared Astronomical Satellite" },
	{ name = 'LHS', int = "Catalogues Luyten#Catalogue LHS" },
	{ name = 'LSPM' },
	{ name = '2MASS', int = "2MASS" },
	{ name = 'NLTT', int = "Catalogues Luyten#Catalogue NLTT" },
	{ name = 'NSV' },
	{ name = 'PPM' },
	{ name = 'PSR' },
	{ name = 'SAO', int = "Catalogue SAO" },
	{ name = 'TYC', int = "Catalogue Tycho" },
	{ name = 'UCAC2' },
	{ name = 'USNO-B1.0', int = "Catalogue d'étoiles#Catalogues USNO" },
	{ name = 'WDS', int = "Catalogue d'étoiles doubles de Washington" },
}

local function getP528( entity )
	local result = {}
	if type( entity ) == 'table' and
		type( entity.claims ) == 'table' and
		type( entity.claims.P528 ) == 'table'
	then
		local p528 = entity.claims.P528
		for i = 1, #p528 do
			local snack = p528[i]
			if type( snack ) == 'table' and
				snack.type == 'statement' and
				type( snack.mainsnak ) == 'table' and
				snack.mainsnak.snaktype== 'value' and
				snack.mainsnak.datatype == 'string' and
				type( snack.mainsnak.datavalue ) == 'table' and
				Outils.trim( snack.mainsnak.datavalue.value )
			then
				table.insert( result, snack.mainsnak.datavalue.value )
			end
		end
	end
	return result
end

local function findInList( str, list )
	str = str:gsub('([$%%()*+%-.?()%[%]^])', '%%%1')	-- escape magic characters
	for i = 1, #list do
		if list[i]:find( '^' .. str ) then
			local text = Outils.trim( list[i]:gsub('^' .. str .. '(%W)', '%1' ) )
			return list[i], text
		end
	end
end

function p.VisieR( frame )
	local args = Outils.extractArgs( frame )
	local entity = mw.wikibase.getEntity( Outils.trim( args.entity ) )
	local wikidataList = getP528( entity )
	local resultList = {}
	for i = 1, #catalogList do
		catalog = catalogList[i].name
		local ref, text = findInList( catalog, wikidataList )
		if Outils.trim( args[catalog] ) then
			text = args[catalog]
			if args[catalog]:sub( 1, 1 ) == '+' then
				ref = catalog .. args[catalog]
			else
				ref = catalog .. ' ' .. args[catalog]
			end
		end
		if ref then
			local name
			if catalogList[i].int then
				name = '[[' .. catalogList[i].int .. '|' .. catalog .. ']]'
			else
				name = catalog
			end
			local url = ' : [' .. baseUrl .. mw.uri.encode( ref ) .. ' ' .. text .. ']'
			table.insert( resultList, '* ' .. name .. url )
		end
	end
	return table.concat( resultList, '\n' )
end

return p