Module:MakeUniqueList

From Tsadra Commons

Documentation for this module may be created at Module:MakeUniqueList/doc

local p = {}

function p.main(frame)

	local pargs = frame:getParent().args
	local list = pargs[1]
	local sep = pargs[2]
	local values = {}
	local valuesOrdered = {}

	for item in string.gmatch(list, "([^" .. sep .. "]+)") do
		if not values[item] then
			values[item] = true
			table.insert(valuesOrdered, item)
		end
	end

	local output = ''
	local finalsep = ''
	for _, value in ipairs(valuesOrdered) do
		output = output .. finalsep .. value
		if pargs[3] then
			finalsep = pargs[3]
		else
			finalsep = pargs[2]
		end
	end

	return output

end

return p