Module:Arrays

local p = {}

function p.removeDuplicates(frame) local arg, hash = frame:getParent.args[1], {} local delimiter = frame:getParent.args.delimiter or "," local m, n = mw.text.split(arg, delimiter), {}

for _, l in ipairs(m) do	   l = mw.text.trim(l) if (not hash[l]) then n[#n+1] = l           hash[l] = true end end arg = table.concat(n, delimiter) return frame:preprocess(arg) end

function p.removeCustom(frame) local args, hash = frame:getParent.args, {} local delimiter = args.delimiter or "," local t = mw.text.split(args[1], delimiter) local s = mw.text.split(args[2], delimiter)

for i, v in ipairs(t) do       t[i] = mw.text.trim(v) hash[t[i]] = true end

if args[3] and not hash[args[3]] then return table.concat(t, delimiter) end

for i, v in ipairs(s) do       s[i] = mw.text.trim(v) end

for j = #s, 1, -1 do   	for i = #t, 1, -1 do            if t[i] == s[j] then table.remove(t, i)           end end end return table.concat(t, delimiter) end

return p