require "Амодуль:No globals"

local p = {}

-- Изменяет первую букву строки на заглавную
-- @param строка
-- @return строка

function p.firstToUpper(str)
	return mw.ustring.upper(mw.ustring.sub(str, 1, 1)) .. mw.ustring.sub(str, 2)
end

-- Удаляет пустые параметры из таблицы
-- @param табулица
-- @return табулица

function p.cleanArgs(args)
	local cleanArgs = {}
	for key, value in pairs(args) do
		if type(value) == 'string' then
			local value = mw.text.trim(value)
			if value ~= '' then
				cleanArgs[key] = value
			end
		elseif type(value) == 'table' then
			if not p.isTableEmpty(value) then
				cleanArgs[key] = value
			end
		else
			cleanArgs[key] = value
		end
	end
	return cleanArgs
end

-- Определяет, является ли таблица пустой (вообще не имеет или пустые параметры)
-- @param табулица
-- @return bool

function p.isTableEmpty(Table)
	for key, value in pairs(Table) do
		if type(value) == 'table' then
			if not p.isTableEmpty(value) then
				return false
			end
		elseif type(value) == 'string' then
			if mw.text.trim(value) ~= '' then
				return false
			end
		else
			return false
		end
	end
	return true
end

return p