Modulo:Split
![Info](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/30px-Lua-Logo.svg.png)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Split/man (modifica • cronologia)
Sandbox: Modulo:Split/Sandbox (modifica•cronologia) • Test: Modulo:Split/Test (modifica•cronologia)
Questo modulo serve per dividere un elenco di parole ogni qualvolta si incontra un determinato carattere e trasforma in link ogni singola serie divisa.
Sintassi
{{#invoke: Split | split | elenco di termini da suddividere | splitof = carattere da cercare per dividere | SplitIn = separatore elenco | prefix = eventuale prefisso da aggiungere ad ogni link (es: il namespace }}
Qualora si voglia mostrare del testo nel link prima del nome delle pagina (esempio il namespace), è possibile usare il parametro prefixInLink
Esempio
{{#invoke: Split | split | Sandbox, Aministratori, Bar, bot | splitof =, | splitin = - | prefix = WZ: |prefixInLink=prova@}}
darà come risultato: prova@Sandbox- prova@Amministratori- prova@Bar- prova@Bot
Problemi noti
A causa di come MediaWiki gestisce i parametri dei template, uno spazio dopo il segno = e prima del pipe ( | ), verrà ignorato dal software, quindi nel caso in cui si voglia aggiungere uno spazio prima del segno aggiunto per dividere, bisognerà scrivere il parametro facendolo precedere da un trattino basso ( _ ) per ogni spazio che vogliamo aggiungere, esempio : {{#invoke:Split|split|Sandbox , Amministratori , Bar , Bot|splitof =, |splitin =_• |prefix = WZ:}}
darà come risultato: Sandbox • Amministratori • Bar • Bot
- Nota
- lo spazio successivo al carattere (quindi precedente alla parola successiva) viene aggiunto automaticamente.
Funzione pratica
Questo modulo è stato pensato per essere usato con il {{Avviso abusefilter}} per poter usare lo stesso avviso per più filtri e non perdere allo stesso tempo la comodità di avere l'elenco linkato dei filtri che usano tale avviso. La sua funzione però può essere usata ogniqualvolta si abbia la necessità di linkare un elenco di parole.
local getArgs = require('Modulo:Arguments').getArgs
local p = {}
function p.split(frame)
local pages = {}
local args = getArgs(frame)
local Target = frame.args[1]
local SplitOf = args.splitof or frame.args[2] or ''
SplitIn = args.splitin or frame.args[3] or ', '
local SplitIn = mw.ustring.gsub(SplitIn, '_', ' ')
local Prefix = args.prefix or ''
local PrefixInLink = args.prefixInLink or ''
for i, j in pairs(mw.text.split(Target, SplitOf)) do
table.insert(pages, string.format('[['..Prefix..'%s|'..PrefixInLink..''..mw.text.trim(j)..']]', mw.text.trim(j)))
end
return table.concat(pages, SplitIn..' ')
end
return p