Module:Separated entries/sandbox
See also the companion subpage for test cases (run).
Changes to it can cause immediate changes to the Wikipedia 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.
Usage
[edit ]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.
{{#invoke:separated entries|main|separator=...}}
For more complex cases – such as selecting the parameters to list, or preprocessing them, or omitting the last parameters – {{#invoke:params|list_values}} is available. The following two examples with " + " as delimiter and " ... " as conjunction produce a similar result:
{{#invoke:separated entries|main|separator= + |conjunction= ... }}
{{#invoke:params|sequential|trimming_values|with_value_not_matching||strict|squeezing|setting|i/l| + | ... |list_values}}
See also
[edit ]- {{Enum }}
- {{Br separated entries }}
- {{#invoke:params|list_values}}
Editors can experiment in this module's sandbox (edit | diff) and testcases (edit | run) pages.
Add categories to the /doc subpage. Subpages of 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. localcompressSparseArray=require('Module:TableTools').compressSparseArray localp={} functionp._main(args) localdataPlural=args.dataPlural localseparator=args.separator -- Decode (convert to Unicode) HTML escape sequences, such as " " for space. andmw.text.decode(args.separator)or'' localconjunction=args.conjunctionandmw.text.decode(args.conjunction)orseparator -- Discard values before the starting parameter. localstart=tonumber(args.start) ifstartthen fori=1,start-1doargs[i]=nilend end -- Discard named parameters. localvalues=compressSparseArray(args) localresult=mw.text.listToText(values,separator,conjunction) ifdataPluraland#values>0and(#separator>0or#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>1and'1'or'0')..'"></span>' end returnresult end localfunctionmakeInvokeFunction(separator,conjunction,first) returnfunction(frame) localargs=require('Module:Arguments').getArgs(frame,{frameOnly=(frame.args.frameOnlyor'')~=''}) args.separator=separatororargs.separator args.conjunction=conjunctionorargs.conjunction args.first=firstorargs.first returnp._main(args) end end p.main=makeInvokeFunction() p.br=makeInvokeFunction('<br />') p.comma=makeInvokeFunction(mw.message.new('comma-separator'):plain()) returnp