local export = {}

function export.typecheck(labels)
	local errors = require "Module:array"()
	for label, data in pairs(labels) do
		local languages, language = data["languages"], data["language"]
		if languages then
			if type(languages) ~= "table" then
				errors:insert("giá trị ngôn ngữ cho " .. label .. " không phải là một bảng")
			else
				for i, language in ipairs(languages) do
					if type(language) ~= "string" then
						errors:insert(
							"giá trị #" .. i .. " trong giá trị ngôn ngữ cho "
								.. label .. " không phải là một xâu")
					else
						data["languages"][language] = true
					end
				end
			end
		elseif language then
			if type(language) ~= "string" then
				errors:insert(
					"giá trị ngôn ngữ cho " .. label .. " không phải là một xâu")
			else
				data["languages"] = {}
				data["languages"][language] = true
			end
		end
	end
	if #errors > 0 then
		error(errors:concat ", ")
	end
end

function export.handle_languages(labels)
	if type(labels) ~= "table" then
		error('Hàm "handle_languages" yêu cầu một bảng làm đối số.')
	end
	
	if mw.title.getCurrentTitle().fullText:find "Mô đun:labels" then
		return export.typecheck(labels)
	end
	
	for label, data in pairs(labels) do
		local languages, language = data["languages"], data["language"]
		if languages then
			for _, language in ipairs(languages) do
				languages[language] = true
			end
		elseif language and language ~= "" then
			data["languages"] = {}
			data["languages"][language] = true
		end
	end
end

return export