مۆدیوول:category tree/topic/data
ڕواڵەت
"بەڵگەدارکردنی ئەم مۆدیوولە دەکرێ لە مۆدیوول:category tree/topic/data/docدا دروست بکرێ"
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",
"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["ھەموو بابەتەکان"] = {
type = "toplevel",
description = "چەمکە {{{langname}}}ییەکان کە بەپێی بابەت وەک «خێزان»، «کیمیا»، «ھەسارەکان»، «سەگەکان» یان «شارەکانی فەڕەنسا» ڕێکخراون.",
parents = {{name = "{{{langcat}}}", nontopic = true}},
}
for _, typ in ipairs { "related-to", "set", "type", "name", "grouping" } do
labels["list of " .. typ .. " categories"] = {
type = "toplevel",
description = "All " .. typ .. " categories currently available in {{{langname}}}.",
parents = {{name = "ھەموو بابەتەکان", sort = " *"}},
}
end
labels["list of mixed categories"] = {
type = "toplevel",
description = "All categories currently available in {{{langname}}} that belong to more than one type.",
parents = {{name = "ھەموو بابەتەکان", 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("List of") or title:find("All ") or title:find(" lemmas")
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}