Modulo:Sort
Vai alla navigazione
Vai alla ricerca
Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Sort/man (modifica · cronologia)
Sandbox: Modulo:Sort/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Sort/test (modifica · cronologia · Esegui)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Sort/man (modifica · cronologia)
Sandbox: Modulo:Sort/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Sort/test (modifica · cronologia · Esegui)
Questo modulo serve a ordinare una stringa rispetto a un certo carattere divisore.
Gli argomenti in input sono:
- primo parametro posizionale: la stringa da ordinare;
order
: può essereasc
(default) odesc
, per ordinare la stringa, rispettivamente, secondo un ordine crescente o decrescente;split
: il carattere divisore, di default è l'andata a capo;join
: il carattere per riunire la stringa, di default è uguale al valore displit
.
split
e join
riconoscono le sequenze di caratteri %s
e %n
come, rispettivamente, uno spazio e un'andata a capo. Questa soluzione è particolarmente utile per l'input dei parametri dei template, in quanto gli spazi agli estremi non vengono considerati.
Il modulo è usato dal template {{Ordina}}.
local p = {}
local function check_char(v)
if v == '' or v == nil then return end
return v:gsub("%%n", "\n"):gsub("%%s", " ")
end
function p.sort(frame)
local text = mw.text.trim(frame.args[1] or '')
local order = frame.args.order
local split_char = check_char(frame.args.split) or '\n'
local join_char = check_char(frame.args.join) or split_char
-- Divide la stringa in input e ricava un array di elementi
local items = mw.text.split(text, split_char, true)
-- Ordina l'array di elementi in base al tipo di ordinamento richiesto
table.sort(items, function (a, b)
a, b = mw.text.trim(a), mw.text.trim(b)
if order == 'desc' then return a > b else return b > a end
end)
-- Restituisce un'unica stringa
return mw.text.trim(table.concat(items, join_char))
end
return p