Modulo:Split

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search

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 = WB: |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 = WB:}}

darà come risultato: SandboxAmministratoriBarBot

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