Модуль:Control

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

Для документации этого модуля может быть создана страница Модуль:Control/doc

local m

local function implement_loop (frame, template, const_params, cycle_param, cycle_params, separator)
	local ret = {}
	local template_params = {}
	-- mw.clone (const_params) does not work.
	for key, value in pairs (const_params) do
		template_params [key] = value
	end
	for _, param in ipairs (cycle_params) do
		template_params [cycle_param] = param
		--template_params = {[cycle_param] = param}
		ret [#ret + 1] = frame:expandTemplate {title = template, args = template_params}
	end
	return table.concat (ret, separator)
end

return {
	loop = function (frame)
		local const_params = mw.clone (frame.args)
		const_params.template = nil
		const_params.cycle = nil
		const_params.separator = nil
		return implement_loop (frame, frame.args.template, const_params, frame.args.cycle, frame:getParent ().args, frame.args.separator)
	end
}