Modulo:Separatore lista

Da Wikiversità, l'apprendimento libero.

Modulo che implementa i template {{Separatore lista}} e {{Separatore lista br}}.


--[[
* Modulo che implementa i template Separatore lista e Separatore lista br.
]]--

require('strict')

local getArgs = require('Modulo:Arguments').getArgs
local p = {}

local function formatList(args, separatore, congiunzione)
	local keys, tbl = {}, {}

	-- una sequence Lua non può mancare di un elemento,
	-- mentre getArgs avrà rimosso gli elementi con stringa vuota,
	-- quindi è necessario prima ottenere la lista
	-- delle chiavi numeriche con pairs e ordinarla
	for key, _ in pairs(args) do
		key = tonumber(key)
		if key and key >= 1 and math.floor(key) == key then
			table.insert(keys, key)
		end
	end
	table.sort(keys)

	for _, key in ipairs(keys) do
		table.insert(tbl, args[key])
	end

	return mw.text.listToText(tbl, separatore, congiunzione)
end

-- Funzione per il template {{Separatore lista}}
function p.separatore_lista(frame)
	local args = getArgs(frame, { parentOnly = true })
	return formatList(args, args.separatore or '', args.congiunzione or args.separatore or '')
end

-- Funzione per il template {{Separatore lista br}}
function p.separatore_lista_br(frame)
	local args = getArgs(frame, { parentOnly = true })
	return formatList(args, '<br />', '<br />')
end

return p