Modulo:Sort: differenze tra le versioni
m ripristino trim finale finché non si decide diversamente |
m una versione importata |
||
(Nessuna differenza)
|
Versione attuale delle 17:35, 16 set 2020
La documentazione per questo modulo può essere creata in Modulo:Sort/man
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