Module:Separated entries: Difference between revisions

From Path of Exile 2 Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 8: Line 8:


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


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



Revision as of 05:45, 24 June 2021

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)
    return mw.text.listToText(values, separator, conjunction)
end

local function makeInvokeFunction(separator, conjunction, first)
    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.first = first or args.first
        return p._main(args)
    end
end

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

return p