Module:List

La bibliothèque libre.
Sauter à la navigation Sauter à la recherche
Documentation du module [voir] [modifier] [purger]
La documentation de ce module Scribunto écrit en Lua est incluse depuis sa sous-page de documentation.

Ce module est utilisé par le modèle {{List}}.

local export = {};

-- Cached function for performance
local _table_insert = table.insert;
local _table_concat = table.concat;
local str = require('Module:String');
local _getBoolean = str._getBoolean;

local function _table_join( t, sep )
	local type1 = type( t[1] );
	if type1 == 'string' then
		local seq = {};
		for _, item in ipairs( t ) do
			_table_insert( seq, item );
		end
		return _table_concat( seq, sep );
	elseif type1 == 'table' then
		local seq = {};
		for _, tab in ipairs( t ) do
			for _, item in ipairs( tab ) do
				_table_insert( seq, item );
			end
		end
		return seq;
	else
		return nil;
	end
end
export._t_join = _table_join;
table.join = _table_join;

--[[
list

]]
local function list( frame )
	frame = frame:getParent();
	local trim = _getBoolean( frame.args.trim, true );
	local all = _getBoolean( frame.args.all, false );
	local separator = frame.args.separator or '&nbsp;<b>·</b> ';
	local items = {};
	for _, item in ipairs( frame.args ) do
		if trim then
			item = item:gsub('^%s+', ''):gsub('%s+$', '')
		end
		if all or item ~= '' then
			_table_insert( items, item );
		end
	end
	return _table_join( items, separator ) or ''
end
export.list = list;

return export;