Module:Separated entries: Difference between revisions
Jump to navigation
Jump to search
imported>Ahecht {frameOnly = (frame.args.frameOnly or '') ~= ''} |
m 1 revision imported |
||
(No difference)
| |||
Latest revision as of 05:52, 1 January 2026
| This module is rated as ready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned on help pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed through sandbox testing rather than repeated trial-and-error editing. |
| This Lua module is used in system messages, and on approximately 2,650,000 pages, or roughly 107027% of all pages. Changes to it can cause immediate changes to the Doc-Wiki user interface. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them. |
| This module depends on the following other modules: |
Module:Separated entries and {{Separated entries}} serve as a template front-end to mw.text.listToText. They take any number of positional parameters and piece them together with |separator=. |conjunction= can be optionally defined if a different separator is desired between the last and second last items. The starting positional parameter can be specified using |start=. Leading and trailing whitespace is stripped. To add deliberate leading and trailing whitespace, use the HTML entity   for a space and for a "newline". Separated entries does not raise any errors by design.
Usage
{{#invoke:Separated entries|main|separator=...}}
See also
- {{Enum}}
- {{Br separated entries}}
- {{#invoke:params|list_values}}
-- 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 dataPlural = args.dataPlural
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 result = mw.text.listToText(values, separator, conjunction)
if dataPlural and #values > 0 and (#separator > 0 or #conjunction > 0) then
-- flag to [[Module:Detect singular]] whether this is a list with >1 element
result = result..'<span style="display:none" data-plural="'..(#values > 1 and '1' or '0')..'"></span>'
end
return result
end
local function makeInvokeFunction(separator, conjunction, first)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {frameOnly = (frame.args.frameOnly or '') ~= ''})
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