Differenze tra le versioni di "Modulo:Wikilib"

1 076 byte rimossi ,  02:50, 29 feb 2016
Refactoring completo del modulo: la maggior parte delle funzioni sono state spostate in submodules più specifici e appropriati, lasciando qui solo quelle utili per l'IO con MediaWIki *** sovrascritto il testo esistente ***
(Correzione errori *** sovrascritto il testo esistente ***)
(Refactoring completo del modulo: la maggior parte delle funzioni sono state spostate in submodules più specifici e appropriati, lasciando qui solo quelle utili per l'IO con MediaWIki *** sovrascritto il testo esistente ***)
--[[
-- Questa è la libreria di Pokémon Central Wiki per i Moduli in Lua!
 
In questa libreria si hanno funzioni relative
all'IO con MediaWiki: per esempio, le più comuni
processazioni dei parametri in input e i pattern
tipici per la creazione dell'output
 
--]]
 
local w = {}
 
local txt = require('Modulo:Wikilib/strings')
-- Funzioni di gestione testo
local tab = require('Modulo:Wikilib/tables')
 
-- Rimuove gli spazi vuoti all'inizio e alla fine di una stringa
w.trim = function(s)
return tostring(s):match("^%s*(.-)%s*$")
end
 
stringw.trim = function(self) return wstring.trim(self) end
 
-- RendeEffettua maiuscolail latrim primadi tutti gli letteraelementi di una stringatable
w.first_uppercase = function(s)
s = tostring(s)
return string.upper(s:sub(1,1))..s:sub(2)
end
 
w.trimtrimAll = function(stab)
-- Rende possibile la string interpolation in stile Python
return table.map(tab, string.trim)
-- es.: interp("${name} is ${value}", {name = "foo", value = "bar"}
-- vedi: http://lua-users.org/wiki/StringInterpolation
w.interp = function(s, tab)
return (s:gsub('($%b{})', function(w) return tab[w:sub(3, -2)] or w end))
end
 
w.trim_all = w.trimAll
-- Aggiunge gli zeri a sinistra ai numeri con meno di tre cifre:
-- dato che valori numerici di questo tipo non sono supportati,
-- la funzione restituisce stringhe
 
--[[
w.three_figures = function(n)
if n < 10 then
return '00' .. n
elseif n < 100 then
return '0' .. n
else
return tostring(n)
end
end
 
Effettua il mapping di una table con una funzione
-- Funzioni per le tabelle
data a cui vengono passati gli elementi dopo il trim
 
--]]
-- Ricerca lineare: si passa una table e un valore e
-- restituisce il suo indice o nil
 
w.linear_searchtrimAndMap = function(tab, valuefunct)
forreturn ktable.map(tab, v in pairsfunction(tabs) do
return funct(string.trim(s))
if v == value then
return kend)
end
end
return nil
end
 
w.trim_and_map = w.trimAndMap
-- Standard per copiare il frame.args in un'altra table
-- dopo aver eseguito alcune operazioni
 
--[[
w.sample_args = function(tab, operations)
local d = {}
for k, v in pairs(tab) do
d[k] = operations(v) or ''
end
return d
end
 
-- Rende possibile la string interpolation in stile Python
-- Funzione da passare come secondo argomento alla table.sort:
-- es.: interp("${name} is ${value}", {name = "foo", value = "bar"}
-- Dato un elenco di entries come elementi di una table
-- vedi: http://lua-users.org/wiki/StringInterpolation
-- li ordina in base al numero di dex nazionale; in presenza
-- di forme alternative, le ordina in ordine alfabetico,
-- con al forma base per prima
 
--]]
w.sort_ndex = function(a, b)
 
local na, sa = a:match('Ani(%d+)(%a*)MS.gif')
w.interp = function(s, tab)string.interp
local nb, sb = b:match('Ani(%d+)(%a*)MS.gif')
if na == nb then
return (sa or 'a'):lower() < (sb or 'a'):lower()
else
return na < nb
end
end
 
return w
106 640

contributi