Module:Separated entries: Difference between revisions

From Path of Exile 2 Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
-- 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 = {}
local p = {}
local getArgs


function p.main(frame)
function p._main(args)
if not getArgs then
    local separator = args.separator
getArgs = require('Module:Arguments').getArgs
        -- Decode (convert to Unicode) HTML escape sequences, such as " " for space.
end
        and mw.text.decode(args.separator) or ''
local args = getArgs(frame, {
    local conjunction = args.conjunction and mw.text.decode(args.conjunction) or separator
-- wrappers = 'Template:Concat' -- Wrappers invokes frame:title()
    -- Discard values before the starting parameter.
})
    local start = tonumber(args.start)
local sep = args.sep or ', '
    if start then
local iargs = {}
        for i = 1, start - 1 do args[i] = nil end
for k, v in pairs(args) do
    end
if type(k) == 'number' and k >= 1 and math.floor(k) == k and string.find(tostring(v), '%S') then
    -- Discard named parameters.
table.insert(iargs, k)
    local values = compressSparseArray(args)
end
    local out = {}
end
    if #values > 0 and args.before then
table.sort(iargs)
        out[#out+1] = args.before
for i, v in ipairs(iargs) do
    end
iargs[i] = tostring(args[v])
    out[#out+1] = mw.text.listToText(values, separator, conjunction)
end
    if #values > 0 and args.after then
return p._main(iargs, sep)
        out[#out+1] = args.after
    end
    return table.concat(out)
end
end


function p._main(iargs, sep)
function p.main(frame)
return table.concat(iargs, sep)
    local args = require('Module:Arguments').getArgs(frame)
    return p._main(args)
end
end


return p
return p

Latest revision as of 18:20, 14 October 2024

Module documentation[view] [edit] [history] [purge]


Lua logo

This module depends on the following other modules:

This module was adapted from Module:Separated entries on Wikipedia.
Adaptation is noted for reference and attribution only. This module may differ from the original in function or in usage. The documentation on Wikipedia may be helpful in understanding this module.

-- 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
    end
    -- Discard named parameters.
    local values = compressSparseArray(args)
    local out = {}
    if #values > 0 and args.before then
        out[#out+1] = args.before
    end
    out[#out+1] = mw.text.listToText(values, separator, conjunction)
    if #values > 0 and args.after then
        out[#out+1] = args.after
    end
    return table.concat(out)
end

function p.main(frame)
    local args = require('Module:Arguments').getArgs(frame)
    return p._main(args)
end

return p