--[[
-- 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
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
|