--[[JoinJoins all non null arguments together, the first argument is the separator {{ #invoke:join | join | sep | one | two | three }}/**/ if args[1] == nil then local pFrame = frame:getParent(); args = pFrame.args; for k,v in pairs( frame.args ) do args[k] = v; end end]]localjoin={}functionjoin.join(frame)localres='';localargs={};fork,vinpairs(frame.args)doifv~=nilandv~=''thentable.insert(args,v)--res = res .. '[' .. k .. ']=' ..vendendlocalsep=args[1];res=table.concat(args,sep,2,j);returnresendfunctionjoin.join2(frame)localres='';localargs={};fork,vinpairs(frame.args)doifv~=nilandv~=''thentable.insert(args,v)--res = res .. '[' .. k .. ']=' ..vendendlocalsep=args[1];localsep2=args[2];if#args<3thenres=''elseif#args==3thenres=args[3]elseif#args==4thenres=args[3]..sep2..args[4]elseres=table.concat(args,sep,3,#args-1);res=res..sep2..args[#args];endreturnresendfunctionjoin.concat(frame)localres='';fork,vinpairs(frame.args)dores=res..vendreturnresendfunctionjoin.iconcat(frame)localres='';fork,vinipairs(frame.args)dores=res..vendreturnresendreturnjoin