Modulo:Formatnum retrocompatibile: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
+segni meno |
m Protetto "Modulo:Formatnum retrocompatibile": Template o modulo usato in maniera estensiva ([Modifica=Consentito solo agli amministratori] (infinito) [Spostamento=Consentito solo agli amministratori] (infinito)) |
||
(Una versione intermedia di un altro utente 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('
elseif mw.ustring.match( str, "^%-?%d+ [%d. ]+$" ) then
-- Numero con spazi, li interpretiamo come separatori delle migliaia
return p._formatnum( mw.ustring.gsub( str, " ", "" ) ) .. add_cat('
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 eventuali trattino e segni meno
return ( mw.ustring.gsub( str, "[%d.]+", p._formatnum ) ) .. add_cat('
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('
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('
elseif mw.ustring.match( str, "^%-?[%d.]+ *\127'\"`UNIQ%w*%-+ref%-%w*%-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('
end
end
function p._formatnum( str )
return mw.getCurrentFrame():preprocess( "{{formatnum:" .. str .. "}}" )
end
|