require "strict"

local p = {}

-- Změní první písmeno řetězce na velké
-- @param řetězec
-- @return řetězec

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

-- Odstraní z tabulky prázdné parametry
-- @param tabulka
-- @return tabulka

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

-- Rozhodne, zda je tabulka prázdná (má žádné nebo prázdné parametry)
-- @param tabulka
-- @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