-- Este módulo processa dados para [[Module:IPAc-pt]]. É destinado a ser
-- carregado com mw.loadData.

local PRONUNCIATION_MODULE = 'Módulo:IPAc-pt/pronúncia'
local PHONEME_MODULE = 'Módulo:IPAc-pt/fonemas'

local function makeData(oldData)
	local newData = {}
	for i, old in ipairs(oldData) do
		local new = {}
		for k, v in pairs(old) do
			if k ~= 'aliases' and k ~= 'code' then
				new[k] = v
			end
		end
		newData[old.code] = new
		if old.aliases then
			for i, alias in ipairs(old.aliases) do
				newData[alias] = new
			end			
		end
	end
	return newData
end

local function main()
	local pronunciation = makeData(require(PRONUNCIATION_MODULE))
	local phonemes = makeData(require(PHONEME_MODULE))

	-- Cheque que nenhuma tabela de pronúncia está contida nos dados dos
	-- fonemas. Isto poderia causar erros silenciosos e difíceis de debugar
	-- não fossem checados, então faça causar uma grande mensagem de erro
	-- vermelha, em vez disso.
	for id in pairs(pronunciation) do
		if phonemes[id] then
			error(string.format(
				"ID duplicada '%s' encontrada em %s e %s",
				id,
				PRONUNCIATION_MODULE,
				PHONEME_MODULE
			))
		end
	end

	return {
		pronunciation = pronunciation,
		phonemes = phonemes,
	}
end

return main()