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
--[[
Questo modulo serve a fornire l'accesso alle funzioni stringa base.
La maggior parte delle funzioni di questo modulo possono essere invocate con
parametri con nome, senza nome o con un misto di entrambi. Quando vengono usati
parametri con nome il software di Mediawiki rimuoverà ogni spazio iniziale o finale
dal parametro. A seconda dell'uso che si vuole fare della funzione può essere
vantaggioso conservare oppure rimuovere questi spazi.
Opzioni globali
ignore_errors: se settato a 'true' o 1, ogni condizione di errore ritornerà una stringa vuota
piuttosto che un messaggio di errore.
error_category: nel caso si verifichi un errore è il nome di una categoria da includere
insieme al messaggio di errore. La categoria di default
[Categoria:Errori del Module String]. (TODO:verificare)
no_category: Se settato a 'true' o 1, non verranno aggiunte categorie in caso di errore.
Unit tests per questo modulo sono disponibili a Module:String/test.
Diverse funzioni fanno uso di pattern Lua, questi sono una forma di espressione regolare, per
maggiori informazioni vedi:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
local str = {}
--[[
len
Questa funzione ritorna la lunghezza di una stringa.
Uso:
{{#invoke:String|len|stringa|}}
O
{{#invoke:String|len|s=stringa}}
Parametri
s: La stringa di cui ritornare la lunghezza
Se invocata usando parametri nominati, Mediawiki rimuoverà automaticamente ogni spazio iniziale
o finale dalla stringa.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} );
local s = new_args['s'] or '';
return mw.ustring.len( s )
end
--[[
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
--[[
Questa funzione implementa tutte le caratteristiche di {{str sub}} e viene mantenuta per motivi
di compatibilità con template più vecchi.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
return str