Minecraft Wiki
Register
Advertisement

Цей модуль дозволяє об'єднювати и нормалізовувати аргументи. У нього є побічний ефект, що полягає в тому, що аргументи становляться справжньою таблицею, а не пустою таблицею с метатаблицею, яка забеспечує доступ к аргументам. Це дозволяє працювати оператору #, а також дозволяє додавати в таблицю нові значення, щоб вони не ігнорувались при ітерації.

Функція norm нормалізує передані їй аргументи, вилучая попередні і завершальні пробіли й встановлючи пусті аргументи як рівні nil. Якщо функції не передана таблиця, вона автоматично отримає таблицю аргументів об'екта-родича поточного фрейму.

Функція merge об'еднає дві таблиці, перезаписуючи дублюючі значення в другій таблиці значеннями из першой таблиці, а також, якщо параметр norm дорівнює true, виконуючи дії функції norm. Якщо перший параметр не є таблицею, він використовуєтся в якості значення для параметру norm, він автоматично отримає таблицю напряму переданих аргументів поточного фрейму и об'еднає її з таблицею аргументів об'екта-родича поточного фрейму.

local p = {}
function p.norm( origArgs )
	if type( origArgs ) ~= 'table' then
		origArgs = mw.getCurrentFrame():getParent().args
	end
	local args = {}
	
	for k, v in pairs( origArgs ) do
		v = mw.text.trim( tostring( v ) )
		if v ~= '' then
			args[k] = v
		end
	end
	
	return args
end

function p.merge( origArgs, parentArgs, norm )
	if type( origArgs ) ~= 'table' then
		norm = origArgs
		local f = mw.getCurrentFrame()
		origArgs = f.args
		parentArgs = f:getParent().args
	end
	local args = {}
	
	for k, v in pairs( origArgs ) do
		v = mw.text.trim( tostring( v ) )
		if not norm or v ~= '' then
			args[k] = v
		end
	end
	
	for k, v in pairs( parentArgs ) do
		v = mw.text.trim( v )
		if not norm or v ~= '' then
			args[k] = v
		end
	end
	
	return args
end
return p
Advertisement