Modulo:Formatnum retrocompatibile: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix regex
m Protetto "Modulo:Formatnum retrocompatibile": Template o modulo usato in maniera estensiva ([Modifica=Consentito solo agli amministratori] (infinito) [Spostamento=Consentito solo agli amministratori] (infinito))
 
(6 versioni intermedie di 2 utenti non mostrate)
Riga 1:
local p = {};
 
local function add_cat(cat)
cat = '[[Categoria:' .. cat .. ']]'
return mw.title.getCurrentTitle().namespace == 0 and cat or ''
end
 
function p.main(frame)
local str = frame.args[1];
 
if str == '' then
-- Stringa vuota, ad esempio in caso di parametro opzionale etc.
return '';
elseif mw.ustring.match( str, "^%-?[%d.]+$" ) then
-- Caso semplice, un numero nel formato corretto
return p._formatnum( str );
elseif mw.ustring.match( str, "^%-?[%d.,]+,[%d.,]+$" ) then
-- Numero con virgole, lasciamo inalterato
return str .. add_cat('[[Categoria:Modulo formatnum usato con virgole]]';)
elseif mw.ustring.match( str, "^[%-?%d.]+ *%- *[%d. ]+$" ) then
-- Numero con spazi, li interpretiamo come separatori delle migliaia
-- Intervallo numerico, formattiamo solo i numeri escludendo il trattino
return p._formatnum( mw.ustring.gsub( str, "[%d.]+ ", p._formatnum"" ) ) .. add_cat('[[Categoria:Modulo formatnum usato con intervallo]]spazi';)
elseif mw.ustring.match( str, "^%-?[%d.]+ *[-–] *%-?[%d.]+$" ) or mw.ustring.match( str, "^[dD]a %-?[%d.]+ a %-?[%d.]+$" ) then
-- Intervallo numerico, formattiamo solo i numeri escludendo ileventuali trattino e segni meno
return ( mw.ustring.gsub( str, "[%d.]+", p._formatnum ) ) .. add_cat('Modulo formatnum usato con intervallo')
elseif mw.ustring.match( str, "^%a+%.? %-?[%d.]+$" ) then
-- Parola seguita dal numero (ad es. "circa 123"), formattiamo il numero
return ( mw.ustring.gsub( str, "%-?[%d.]+", p._formatnum ) ) .. add_cat('[[Categoria:Modulo formatnum usato con testo prima del numero]]';)
elseif mw.ustring.match( str, "^%a+ %-?[%d.]+ *%[-–] *[%d.]+$" ) then
-- Parola seguita da intervallo, formattiamo i numeri escludendo il trattino
return ( mw.ustring.gsub( str, "[%d.]+", p._formatnum ) ) .. add_cat('[[Categoria:Modulo formatnum usato con testo e intervallo]]';)
elseif mw.ustring.match( str, "^%-?[%d.]+ *\127'\"`UNIQ%w*%-+ref%-%dw*%-QINU`\"'\127$" ) then
-- Numero seguito da nota, possiamo applicare il formatnum perché ignora le note
return p._formatnum( str );
else
-- Tutto il resto. Usiamo formatnum direttamente
return p._formatnum( str ) .. add_cat('[[Categoria:Modulo formatnum usato con qualcosa di imprevisto]]';)
end
end
 
function p._formatnum( str )
return mw.getCurrentFrame():preprocess( "{{formatnum:" .. str .. "}}" );
end