Модул:category tree/derivcatboiler
This module implements {{derivcatboiler}}
. The documentation here describes how the module works, and how to add, modify or remove information from the category tree. For information on how to use the template itself, see its documentation.
This module does not use a data module with recognised labels. Instead, the labels are taken directly from Module:languages, Module:families and Module:etymology languages. Thus, any valid language, family or etymology language code is a valid label. For the top-level category, the label ROOT
is used.
Горња документација је укључена са странице Модул:category tree/derivcatboiler/док. (уреди | историја) Уредници могу да експериментишу на подстраницама песак (направи | дуплирај) и тест (направи) овог модула. Подстранице овог модула. |
local export = {}
-- Category object
local Category = {}
Category.__index = Category
function Category.new_main(frame)
local params = {
[1] = {},
[2] = {required = true},
[3] = {},[4] = {},
}
args = require("Модул:parameters").process(frame:getParent().args, params)
return Category.new({code = args[1], label = args[2], label1 = args[3], label2 = args[4]})
end
function Category.new(info)
for key, val in pairs(info) do
if not (key == "code" or key == "label") then
error("Параметар \"" .. key .. "\" није препознат.")
end
end
local self = setmetatable({}, Category)
self._info = info
if not self._info.label then
error("Ниједна ознака није наведена.")
end
self._lang = self._info.code and (require("Модул:languages").getByCode(self._info.code) or error("The language code \"" .. self._info.code .. "\" is not valid.")) or nil
self._source =
require("Модул:families").getByCode(self._info.label) or
require("Модул:etymology languages").getByCode(self._info.label) or
require("Модул:languages").getByCode(self._info.label) or
error("\"" .. self._info.label .. "\" није ваљани језик, породични језик или етимологија.")
return self
end
export.new = Category.new
export.new_main = Category.new_main
function Category:getInfo()
return self._info
end
function Category:getBreadcrumbName()
local ret = nil
if self._source:getType() == "family" then
ret = self._source:getCategoryName()
else
ret = self._source:getCanonicalName()
end
return (not self._lang and "изрази добијени од " or "") .. ret
end
function Category:getDataModule()
return "Модул:category tree/derivcatboiler"
end
function Category:canBeEmpty()
return false
end
function Category:isHidden()
return false
end
function Category:getCategoryName()
local ret = nil
if self._source:getType() == "family" then
ret = self._source:getCategoryName()
else
if self._source:getCode() == "mul-tax" then
ret = "taxonomic names"
else
ret = self._source:getCanonicalName()
label1=[[{{{3|ret}}}]]
label2=[[{{{4|ret}}}]]
end
end
if self._lang then
return mw.getContentLanguage():ucfirst(self._lang:getCanonicalName() .. " појмови изведени из " .. ret )
else
return "Појмови изведени из " .. ret
end
end
function Category:getDescription()
local ret = nil
if not self._lang then
if self._source:getType() == "family" then
return "Категорије са условима изведеним из " .. self._source:getCategoryName() .. " на разним специфичним језицима."
else
return "Категорије са условима изведеним из " .. self._source:getCanonicalName() .. " на разним специфичним језицима."
end
else
if self._source:getType() == "family" then
return
"Појмови из " .. self._lang:getCanonicalName() .. " потичу из " ..
"[[:Категорија:" .. mw.getContentLanguage():ucfirst(self._source:getCategoryName()) .. "|" .. self._source:getCategoryName() .. "]].\n\n" ..
"Ова категорија идеално би требало да садржи само друге категорије. Записи могу бити категоризирани и овде, када је нека тачна подкатегорија нејасна. " ..
"Ако знате тачан језик из којег је изведен унос који је категоризиран овде, молимо вас уредите његов одговарајући унос."
elseif self._source:getType() == "etymology language" then
return "Појмови из " .. self._lang:getCanonicalName() .. " потичу од " .. self._source:getCanonicalName() .. "."
else
return "Појмови из " .. self._lang:getCanonicalName() .. " потичу од [[:Категорија:" .. mw.getContentLanguage():ucfirst(self._source:getCategoryName()) .. "|" .. self._source:getCategoryName() .. "]]."
end
end
end
function Category:getParents()
if self._lang then
local parent = {}
local pinfo = {
code = self._lang:getCode()
}
local sortkey = nil
if self._source:getType() == "family" then
local fam = self._source:getFamily()
if not fam or fam:getCode() == "qfa-iso" or fam:getCode() == "qfa-not" then
pinfo.label = nil
else
pinfo.label = fam:getCode()
end
sortkey = self._source:getCategoryName()
elseif self._source:getType() == "etymology language" then
if self._source:getParentCode() == "qfa-iso" or self._source:getParentCode() == "qfa-not" or self._source:getParentCode() == "qfa-und" then
pinfo.label = nil
elseif self._source:getParentCode() == self._lang:getCode() then
error("A language can't derive terms from a subvariety of itself.")
--pinfo.label = self._lang:getFamily():getCode()
else
pinfo.label = self._source:getParentCode()
end
sortkey = self._source:getCanonicalName()
else
local fam = self._source:getFamily()
if not fam or fam:getCode() == "qfa-iso" or fam:getCode() == "qfa-not" then
pinfo.label = nil
else
pinfo.label = fam:getCode()
end
sortkey = self._source:getCanonicalName()
end
if not pinfo.label then
return {{name = require("Модул:category tree/poscatboiler").new({code = self._info.code, label = "термини изведени од осталих језика"}), sort = sortkey}}
else
return {{name = Category.new(pinfo), sort = sortkey}}
end
else
if self._source:getType() == "family" then
return {{name = require("Модул:category tree/famcatboiler").new({code = self._info.label}), sort = " "}}
elseif self._source:getType() == "etymology language" then
return {{name = "Категорија:" .. mw.getContentLanguage():ucfirst(self._source:getCategoryName()), sort = "изрази добијени од"}}
else
return {{name = require("Модул:category tree/langcatboiler").new({code = self._info.label}), sort = "изрази добијени од"}}
end
end
end
function Category:getChildren()
return nil
end
function Category:getUmbrella()
if not self._lang then
return nil
end
return Category.new({label = self._source:getCode()})
end
return export