Module:Liens VizieR
Apparence
[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 :
- Module:Outils – utilise les fonctions trim et extractArgs.
Exemples
p.VizieR{ entity = 'Q14265' }
retourne :
Erreur de script : la fonction « VizieR » n’existe pas.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local p = {}
local Outils = require( 'Module:Outils' )
local baseUrl = 'http://vizier.u-strasbg.fr/viz-bin/VizieR-S?'
local catalogList = {
{ name = 'V*', page = "General Catalogue of Variable Stars" },
{ name = 'ADS', page = "Catalogue d'étoiles doubles Aitken" },
{ name = 'AG', page = "Catalogue AGK" },
{ name = 'BD', page = "Bonner Durchmusterung" },
{ name = 'CCDM', page = "Catalogue de composantes d'étoiles doubles et multiples" },
{ name = 'CD', page = "Córdoba Durchmusterung" },
{ name = 'CPD', page = "Cape Photographic Durchmusterung" },
{ name = 'DENIS' },
{ name = 'FK5', page = "Fundamental Katalog" },
{ name = 'G', page = "Catalogue Giclas" },
{ name = 'GC', page = "Boss General Catalogue" },
{ name = 'GJ', page = "Catalogue Gliese" },
{ name = 'HD', page = "Catalogue Henry Draper" },
{ name = 'HIC' },
{ name = 'HIP', page = "Catalogue Hipparcos" },
{ name = 'HR', page = "Catalogue HR" },
{ name = 'IRAS', page = "Infrared Astronomical Satellite" },
{ name = 'LHS', page = "Catalogues Luyten#Catalogue LHS" },
{ name = 'LSPM' },
{ name = '2MASS', page = "2MASS" },
{ name = 'NLTT', page = "Catalogues Luyten#Catalogue NLTT" },
{ name = 'NSV' },
{ name = 'PPM' },
{ name = 'PSR' },
{ name = 'SAO', page = "Catalogue SAO" },
{ name = 'TYC', page = "Catalogue Tycho" },
{ name = 'UCAC2' },
{ name = 'USNO-B1.0', page = "Catalogue d'étoiles#Catalogues USNO" },
{ name = 'WDS', page = "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 .. '(%W)' ) then
local text = Outils.trim( list[i]:gsub('^' .. str, '' ) )
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].page then
name = '[[' .. catalogList[i].page .. '|' .. catalog .. ']]'
else
name = catalog
end
local url = ' : [' .. baseUrl .. mw.uri.encode( ref, 'PATH' ) .. ' ' .. text .. ']'
table.insert( resultList, '* ' .. name .. url )
end
end
return table.concat( resultList, '\n' )
end
return p