Modulo:Sandbox/Brunokito/ModuloBruno

Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Sandbox/Brunokito/ModuloBruno/man (modifica · cronologia)
Sandbox: Modulo:Sandbox/Brunokito/ModuloBruno/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Sandbox/Brunokito/ModuloBruno/test (modifica · cronologia · Esegui)
Questo modulo serve a fare delle prove...
-- Questo modulo si chiama ModuloBruno ed è stato salvato nell'ambiente principale dei moduli
-- Tutti i moduli Lua su Wikipedia devono iniziare definendo una variabile di tipo tabella che contenga
-- le funzioni accessibili dall'esterno. Può avere qualunque nome e contenere anche altri dati
local str = {};
--[[sub
Questa funzione ritorna la sottostringa di una stringa bersaglio, come indicato dagli indici
Uso:
{{#invoke:String|sub|stringa_bersaglio|indice_iniziale|indice_finale}}
O
{{#invoke:String|sub|s=stringa_bersaglio|i=indice_iniziale|j=indice_finale}}
Parameters
s: La stringa da cui estrarre una sottostringa
i: La posizione iniziale del primo carattere della sottostringa da ritornare, se non
specificato è 1.
j: La posizione finale dell'ultimo carattere della sottostringa da ritornare, se non
specificato corrisponde alla lunghezza della stringa_bersaglio (l'ultimo carattere).
I caratteri della stringa sono numerati a partire da 1. Se i o j hanno un valore negativo allora
contano la posizione contando dalla fine della stringa, -1 è l'ultimo carattere della stringa,
-2 il penultimo, ecc...
Se le posizioni sono al di fuori degli estremi della stringa viene ritornato un messaggio di
errore.
]]--
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } );
local s = new_args['s'] or '';
local i = tonumber( new_args['i'] ) or 1;
local j = tonumber( new_args['j'] ) or -1;
local len = mw.ustring.len( s );
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1;
end
if j < 0 then
j = len + j + 1;
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'Indici fuori dagli estremi della stringa' );
end
if j < i then
return str._error( 'Indici in ordine sbagliato' );
end
return mw.ustring.sub( s, i, j )
end