Path of Exile Wiki

Please consider helping keep the wiki up to date. Check the to-do list of updates needed for version 3.14.0.

Game data exports will becoming later as the technical changes in addition to regular changes take some more time.


Path of Exile Wiki
Module documentation[view] [edit] [history] [purge]

-- This module takes positional parameters as input and concatenates them with
-- an optional separator. The final separator (the "conjunction") can be
-- specified independently, enabling natural-language lists like
-- "foo, bar, baz and qux". The starting parameter can also be specified.

local compressSparseArray = require('Module:TableTools').compressSparseArray
local p = {}

function p._main(args)
    local separator = args.separator
        -- Decode (convert to Unicode) HTML escape sequences, such as " " for space.
        and mw.text.decode(args.separator) or ''
    local conjunction = args.conjunction and mw.text.decode(args.conjunction) or separator
    -- Discard values before the starting parameter.
    local start = tonumber(args.start)
    if start then
        for i = 1, start - 1 do args[i] = nil end
    -- Discard named parameters.
    local values = compressSparseArray(args)
    local out = {}
    if #values > 0 and args.before then
        out[#out+1] = args.before
    out[#out+1] = mw.text.listToText(values, separator, conjunction)
    if #values > 0 and args.after then
        out[#out+1] = args.after
    return table.concat(out)

local function makeInvokeFunction(separator, conjunction, start)
    return function (frame)
        local args = require('Module:Arguments').getArgs(frame, {
            parentFirst = true,
        args.separator = separator or args.separator
        args.conjunction = conjunction or args.conjunction
        args.start = start or args.start
        return p._main(args)

p.main = makeInvokeFunction() = makeInvokeFunction('<br />')
p.comma = makeInvokeFunction('comma-separator'):plain())

return p