Modul:category tree/topic cat/data

local labels = {}
local handlers = {}

local top_level_data_module = "Module:category tree/topic cat/data"
local data_module_prefix = top_level_data_module .. "/"

local subpages = {
	"Body",
	"Buildings and structures",
	"Communication",
	"Culture",
	"Earth",
	"Food and drink",
	"Games",
	"History",
	"Human",
	"Lifeforms",
		"Animals",
		"Plants",
	"Mathematics",
	"Miscellaneous",
	"Names",
	"Nature",
	"Numbers",
	"People",
	"Philosophy",
	"Places",
	"Religion",
		"Islam",
	"Sciences",
	"Sex",
	"Social acts",
	"Society",
	"Sports",
	"Technology",
	"Time",
	"Transport",
}
labels["semua topik"] = {
	type = "toplevel",
	description = "Perkataan bahasa {{{langname}}} dikategorikan mengikut topik seperti \"Keluarga\" atau \"Kimia\".",
	parents = {{module = "poscatboiler", args = {label = "{{{langcat}}}", raw = true, called_from_inside = true}}},
}

for _, typ in ipairs { "berkenaan", "set", "jenis", "nama", "kumpulan" } do
	labels["Senarai kategori " .. typ] = {
		type = "toplevel",
		description = "Semua jenis kategori " .. typ .. " kini sudah sedia ada dalam bahasa {{{langname}}}.",
		parents = {{name = "Semua topik", sort = " *"}},
	}
end

labels["senarai kategori gabungan"] = {
	type = "toplevel",
	description = "Semua kategori kini sudah sedia ada dalam {{{langname}}} yang dimiliki lebih dari satu jenis.",
	parents = {{name = "semua topik", sort = " *"}},
}

for label, data in pairs(labels) do
	data.module = top_level_data_module
end

-- Import subpages
for _, subpage in ipairs(subpages) do
	local datamodule = data_module_prefix .. subpage
	local retval = require(datamodule)
	if not retval["LABELS"] then
		retval = {LABELS = retval}
	end
	for label, data in pairs(retval["LABELS"]) do
		if labels[label] and not retval["IGNOREDUP"] then
			error("Label " .. label .. " defined in both [["
				.. datamodule .. "]] and [[" .. labels[label].module .. "]].")
		end
		data.module = datamodule
		labels[label] = data
	end
	if retval["HANDLERS"] then
		for _, handler in ipairs(retval["HANDLERS"]) do
			table.insert(handlers, { module = datamodule, handler = handler })
		end
	end
end

return {LABELS = labels, HANDLERS = handlers}