Modhul:category tree/poscatboiler/data

Dhokumèntasi modhul iki bisa digawé ing Modhul:category tree/poscatboiler/data/doc

local labels = {}
local handlers = {}

local subpages = {
	"entry maintenance",
	"figures of speech",
	"lemmas",
	"miscellaneous",
	"names",
	"non-lemma forms",
	"phrases",
	"rhymes",
	"shortenings",
	"symbols",
	"templates",
	"terms by etymology",
	"terms by grammatical category",
	"terms by lexical property",
	"terms by semantic function",
	"terms by script",
	"terms by usage",
	"words by number of syllables",
	}

-- Import subpages
for _, subpage in ipairs(subpages) do
	local datamodule = "Module:category tree/poscatboiler/data/" .. subpage
	local retval = require(datamodule)
	if not retval["LABELS"] then
		retval = {LABELS = retval}
	end
	for key, data in pairs(retval["LABELS"]) do
		assert(not labels[key], "Duplicate label: " .. key)
		data.edit = datamodule
		labels[key] = data
	end
	if retval["HANDLERS"] then
		for _, handler in ipairs(retval["HANDLERS"]) do
			table.insert(handlers, { module = datamodule, handler = handler })
		end
	end
end

-- Add child categories to their parents
for key, data in pairs(labels) do
	if data.parents then
		for _, parent in ipairs(data.parents) do
			if type(parent) == "table" then
				if parent.name and not parent.template and not parent.name:find("^Category:") then
					if labels[parent.name].children then
						table.insert(labels[parent.name].children, {name = key, sort = parent.sort})
					else
						labels[parent.name].children = {{name = key, sort = parent.sort}}
					end
				end
			else
				if not parent:find("^Category:") and labels[parent] then
					if labels[parent].children then
						table.insert(labels[parent].children, key)
					else
						labels[parent].children = {key}
					end
				end
			end
		end
	end
end

return {LABELS = labels, HANDLERS = handlers}