Pergi ke kandungan

Modul:category tree/topic/data

Daripada Wikikamus

Sublaman

[sunting]
local labels = {}
local handlers = {}

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

local subpages = {
	"Body",
	"Buildings and structures",
	"Communication",
	"Culture",
		"Religion",
			"Islam",
	"Food and drink",
	"Games",
	"History",
	"Human",
		"People",
	"Lifeforms",
		"Animals",
		"Plants",
	"Miscellaneous",
	"Music",
	"Names",
		"Places",
	"Nature",
	"Numbers",
	"Philosophy",
	"Sciences",
		"Mathematics",
	"Sex",
	"Society",
	"Sports",
	"Technology",
	"Thesaurus",
	"Time",
	"Transport",
	"Physical actions",
}

labels["semua topik"] = {
	type = "toplevel",
	description = "Perkataan bahasa {{{langname}}} dikategorikan mengikut topik seperti \"Keluarga\" atau \"Kimia\".",
	parents = {{name = "{{{langcat}}}", nontopic = 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 campuran"] = {
	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

-- Don't throw error on every single category, but on a subset of them, especially the top-level ones.
local function should_throw_error()
	local title = mw.title.getCurrentTitle().text
	return title:find("Senarai") or title:find("Semua ") or title:find("Lema ")
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
			-- Avoid throwing an error on every single topic category and any other invoking category that calls the
			-- topic code.
			if should_throw_error() then
				error("Label " .. label .. " defined in both [["
					.. datamodule .. "]] and [[" .. labels[label].module .. "]].")
			end
		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}