Aller au contenu

Module:AdDéc

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.

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

Ce code est un module MediaWiki, importé depuis Modulo:RaDec de l'encyclopédie italienne, fournissant deux fonctions de parsing pour deux types de coordonnées célestes : Ascension droite (RA) et Déclinaison (DEC).

Utilisation

Fonctions exportables

  • parseRA(text) – prend en entrée une chaîne de caractères contenant une ascension droite dans un format spécifique, et la parse en une table contenant les valeurs d'heures, de minutes et de secondes sous forme de nombres ;
  • parseDEC(text) – prend en entrée une chaîne de caractères contenant une déclinaison dans un format spécifique, et la parse en une table contenant les valeurs de degrés, de minutes et de secondes sous forme de nombres;
  • RA(frame) – fonction utilisée par le modèle italien {{RA}}, retourne une chaîne de caractères formatée pour l'affichage des coordonnées ;
  • DEC(frame) – fonction utilisée par le modèle italien {{DEC}}, retourne une chaîne de caractères formatée pour l'affichage des coordonnées.

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

  • mw.text.trim – Enlève les espaces et autres caractères au début et à la fin d'une chaine de caractères ;
  • mw.text.unstrip – Retire d'une chaine toutes les balises spécifiques à MediaWiki après avoir remplacé les strip markers <nowiki> par la chaine d'origine ;
  • Module:Arguments – Module simplifiant l'utilisation des arguments avec #invoke.

Modules lua utilisant ce module

Modèles appelant directement ce module

Aucun

Exemples

--[[
* Module permettant le parsing d'un point d'ascension droite ou de déclinaison
*
* Imported from https://it.wikipedia.org/w/index.php?title=Modulo:RaDec&oldid=83380991
]]--

require('strict')

local getArgs = require('Module:Arguments').getArgs
local p = {}

-- Funzione di utilità per altri moduli:
-- parsifica il testo generato dal Template:RA (ascensione retta) e
-- restituisce una table con chiavi 'h', 'm' e 's' di tipo number.
function p.parseRA(text)
	local h, m, s

	text = mw.text.trim(mw.text.unstrip(text)):gsub('−', '-'):gsub(',', '.')
	h, m, s = text:match('^(%d+)<sup>h</sup>&nbsp;(%d+)<sup>m</sup>&nbsp;([%d%.]+)<sup>s</sup>$')
	if not h then
		h, m = text:match('^(%d+)<sup>h</sup>&nbsp;(%d+)<sup>m</sup>&nbsp;:$')
		s = 0
	end
	if not h then
		h = text:match('^(%d+)<sup>h</sup>&nbsp;:$')
		m, s = 0, 0
	end

	h, m, s = tonumber(h), tonumber(m), tonumber(s)

	return (h and m and s) and { h = h, m = m, s = s } or nil
end

-- Funzione di utilità per altri moduli:
-- parsifica il testo generato dal Template:DEC (declinazione) e
-- restituisce una table con chiavi 'd', 'm' e 's' di tipo number.
function p.parseDEC(text)
	local d, m, s

	text = mw.text.trim(mw.text.unstrip(text)):gsub('−', '-'):gsub(',', '.')
	d, m, s = text:match('^([+-]?%d+)&deg;&nbsp;(%d+)&prime;&nbsp;([%d%.]+)&Prime;$')
	if not d then
		d, m = text:match('^([+-]?%d+)&deg;&nbsp;(%d+)&prime;&nbsp;:$')
		s = 0
	end
	if not d then
		d = text:match('^([+-]?%d+)&deg;&nbsp;:$')
		m, s = 0, 0
	end

	d, m, s = tonumber(d), tonumber(m), tonumber(s)

	return (d and m and s) and { d = d, m = m, s = s } or nil
end

-- Entry-point per il template {{RA}}
function p.RA(frame)
	local args = getArgs(frame, { parentOnly = true })
	local h, m, s = args[1] and (args[1] .. '<sup>h</sup>&nbsp;') or '', args[2] or ':', args[3] or ':'
	m = m .. (m == ':' and '' or '<sup>m</sup>&nbsp;')
	s = s .. (s == ':' and '' or '<sup>s</sup>')
	return h .. m .. (m == ':' and '' or s)
end

-- Entry-point per il template {{DEC}}
function p.DEC(frame)
	local args = getArgs(frame, { parentOnly = true })
	local d, m, s = args[1] and (args[1] .. '&deg;&nbsp;') or '', args[2] or ':', args[3] or ':'
	m = m .. (m == ':' and '' or '&prime;&nbsp;')
	s = s .. (s == ':' and '' or '&Prime;')
	return d .. m .. (m == ':' and '' or s)
end

return p