Module:AdDéc
Apparence
[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
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.
--[[
* 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> (%d+)<sup>m</sup> ([%d%.]+)<sup>s</sup>$')
if not h then
h, m = text:match('^(%d+)<sup>h</sup> (%d+)<sup>m</sup> :$')
s = 0
end
if not h then
h = text:match('^(%d+)<sup>h</sup> :$')
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+)° (%d+)′ ([%d%.]+)″$')
if not d then
d, m = text:match('^([+-]?%d+)° (%d+)′ :$')
s = 0
end
if not d then
d = text:match('^([+-]?%d+)° :$')
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> ') or '', args[2] or ':', args[3] or ':'
m = m .. (m == ':' and '' or '<sup>m</sup> ')
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] .. '° ') or '', args[2] or ':', args[3] or ':'
m = m .. (m == ':' and '' or '′ ')
s = s .. (s == ':' and '' or '″')
return d .. m .. (m == ':' and '' or s)
end
return p