Contenuto cancellato Contenuto aggiunto
m Ha protetto "Modulo:RaDec": Template o modulo usato in maniera estensiva ([Modifica=Consentito solo agli amministratori] (infinito) [Spostamento=Consentito solo agli amministratori] (infinito)) |
aggiunto segno declinazione per evitare l'uso dello zero con segno |
||
Riga 33: | Riga 33: | ||
-- Funzione di utilità per altri moduli: |
-- Funzione di utilità per altri moduli: |
||
-- parsifica il testo generato dal Template:DEC (declinazione) e |
-- parsifica il testo generato dal Template:DEC (declinazione) e |
||
-- restituisce una table con chiavi 'd', 'm' e 's' di tipo number. |
-- restituisce una table con chiavi 'sign', 'd', 'm' e 's' di tipo number. |
||
function p.parseDEC(text) |
function p.parseDEC(text) |
||
local d, m, s |
local sign, d, m, s |
||
text = mw.text.trim(mw.text.unstrip(text)):gsub('−', '-'):gsub(',', '.') |
text = mw.text.trim(mw.text.unstrip(text)):gsub('−', '-'):gsub(',', '.') |
||
Riga 49: | Riga 49: | ||
d, m, s = tonumber(d), tonumber(m), tonumber(s) |
d, m, s = tonumber(d), tonumber(m), tonumber(s) |
||
if d then |
|||
sign = (d < 0 or tostring(d) == '-0') and -1 or 1 |
|||
d = math.abs(d) |
|||
end |
|||
return (d and m and s) and { d = d, m = m, s = s } or nil |
return (sign and d and m and s) and { sign = sign, d = d, m = m, s = s } or nil |
||
end |
end |
||
Versione delle 19:47, 14 apr 2018
Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:RaDec/man (modifica · cronologia)
Sandbox: Modulo:RaDec/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:RaDec/test (modifica · cronologia · Esegui)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:RaDec/man (modifica · cronologia)
Sandbox: Modulo:RaDec/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:RaDec/test (modifica · cronologia · Esegui)
Modulo che implementa i template {{RA}} e {{DEC}}.
Contiene inoltre funzioni di parsing del loro output per i moduli (parseRA e parseDEC), in modo da tenere allineato il formato nella generazione e nel parsing.
--[[
* Modulo che implementa i template RA e DEC, con inoltre funzioni di parsing del loro output,
* in modo da tenere allineato il formato nella generazione e nel parsing.
]]--
require('Modulo:No globals')
local getArgs = require('Modulo: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 'sign', 'd', 'm' e 's' di tipo number.
function p.parseDEC(text)
local sign, 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)
if d then
sign = (d < 0 or tostring(d) == '-0') and -1 or 1
d = math.abs(d)
end
return (sign and d and m and s) and { sign = sign, 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