Diff: Module:Separated entries
Comparing revision #1 (2018-12-17 20:54:33) with revision #2 (2023-02-02 05:34:07).
| Old | New |
|---|---|
-- This module takes positional parameters as input and concatenates them with |
-- This module takes positional parameters as input and concatenates them with |
-- an optional separator. The final separator (the "conjunction") can be |
-- an optional separator. The final separator (the "conjunction") can be |
-- specified independently, enabling natural-language lists like |
-- specified independently, enabling natural-language lists like |
-- "foo, bar, baz and qux". The starting parameter can also be specified. |
-- "foo, bar, baz and qux". The starting parameter can also be specified. |
local compressSparseArray = require('Module:TableTools').compressSparseArray |
local compressSparseArray = require('Module:TableTools').compressSparseArray |
local p = {} |
local p = {} |
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 |
args.separator = separator or args.separator |
args.conjunction = conjunction or args.conjunction |
args.conjunction = conjunction or args.conjunction |
args.first = first or args.first |
args.first = first or args.first |
return p._main(args) |
return p._main(args) |
end |
end |
end |
end |
p.main = makeInvokeFunction() |
p.main = makeInvokeFunction() |
p.br = makeInvokeFunction('<br />') |
p.br = makeInvokeFunction('<br />') |
p.comma = makeInvokeFunction(mw.message.new('comma-separator'):plain()) |
p.comma = makeInvokeFunction(mw.message.new('comma-separator'):plain()) |
return p |
return p |