Jump to content
Wikipedia The Free Encyclopedia

Module:Separated entries

From Wikipedia, the free encyclopedia
Module documentation[view] [edit] [history] [purge]
‹ The template below (Module rating ) is being considered for merging with Template rating. See templates for discussion to help reach a consensus. ›
[画像:Ready for use] This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing.
[画像:Protected] This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing.
[画像:Warning] This Lua module is used in system messages, and on approximately 2,450,000 pages, or roughly 4% of all pages.
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.
This module depends on the following other modules:

Usage

Module:Separated entries serves as a template front-end to mw.text.listToText . It takes any number of positional parameters and pieces 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:

  1. {{#invoke:separated entries|main|separator= + |conjunction= ... }}
  2. {{#invoke:params|sequential|squeezing|trimming_values|setting|i/l| + | ... |list_values}}

See also

The above documentation is transcluded from Module:Separated entries/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (edit | run) pages.
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.

 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)
		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

AltStyle によって変換されたページ (->オリジナル) /