Module:GetString

local p = {} local h = {}

-- Given an array with gaps, returns a new sequence with all gaps removed. -- For example, `{nil, 2, nil, 4, 5, 6, nil, 8}` will become `{2, 4, 5, 6, 8}`. function h.removeGaps(args) local argPairs = {} local argIndex = 1 for index, arg in pairs(args) do     if type(index) == "number" then argPairs[argIndex] = {index, arg} argIndex = argIndex + 1 end end table.sort(argPairs, function(a, b) return a[1] < b[1] end) local sortedArgs = {} for index, argPair in ipairs(argPairs) do     local arg = argPair[2] sortedArgs[index] = arg end return sortedArgs end

function p._process(args) local args = h.removeGaps(args)

-- Find the first arg not starting with `prev` local firstNonPrev = 0 for index, arg in ipairs(args) do  	  firstNonPrev = index if not string.match(arg, "^prev") then break end end -- Get a table of all args from the first non-prev one down to 1 and strip the `prev` prefixes local textParts = {} for part = firstNonPrev, 1, -1 do  	  textParts[firstNonPrev - part + 1] = string.gsub(args[part], "^prev", "") end return table.concat(textParts, ", ") end

function p.process(frame) local args = require("Module:Arguments").getArgs(frame) return p._process(args) end return p