Module:Join
From Pittsburgh Streets
Documentation for this module may be created at Module:Join/doc
local p = {};
function p.join(frame)
-- Arguments passed to the parent template.
local parent_args = frame:getParent().args;
-- Separators.
local sep = parent_args['sep'] or ', ';
local penult = parent_args['penult'] or sep;
local two_sep = parent_args['two-sep'] or penult;
-- Count nonempty arguments.
local i = 1;
local nonempty_arg_count = 0;
while parent_args[i] do
if parent_args[i] ~= '' then
nonempty_arg_count = nonempty_arg_count + 1;
end
i = i + 1;
end
-- Join pieces.
local result = '';
local i = 1;
local nonempty_args_done = 0;
while nonempty_args_done < nonempty_arg_count do
if parent_args[i] ~= '' then
if nonempty_args_done > 0 then
if nonempty_arg_count == 2 then
result = result .. two_sep
elseif nonempty_args_done == nonempty_arg_count - 1 then
result = result .. penult
else
result = result .. sep
end
end
result = result .. parent_args[i];
nonempty_args_done = nonempty_args_done + 1;
end
i = i + 1;
end
return result;
end
return p;