Модул:category tree/inherited cat

Пређи на навигацију Пређи на претрагу
Документација модула[прикажи] [уреди] [историја] [освежи]

This module implements {{inherited cat}}. For information on how to use the template itself, see its documentation.

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("Језички код \"" .. self._info.code .. "\" није добар.")) or nil
	self._source =
		require("Модул:etymology languages").getByCode(self._info.label) or
		require("Модул:languages").getByCode(self._info.label) or 
		error("\"" .. self._info.label .. "\" is not a valid language or etymology-only language code.")
	
	return self
end

export.new = Category.new
export.new_main = Category.new_main


function Category:getInfo()
	return self._info
end


function Category:getBreadcrumbName()
	return (not self._lang and "изрази наслеђени од " or "") .. self._source:getCanonicalName()
end


function Category:getDataModule()
	return "Модул:category tree/inherited cat"
end


function Category:canBeEmpty()
	return false
end


function Category:isHidden()
	return false
end


function Category:getCategoryName()
	if self._lang then
		return mw.getContentLanguage():ucfirst(self._lang:getCanonicalName() .. " изрази наслеђени од " .. self._source:getCanonicalName())
	else
		return "Изрази наслеђени из " .. self._source:getCanonicalName()
	end
end


function Category:getDescription()
	if not self._lang then
		return "Категорије са наслеђеним изразима " .. self._source:getCanonicalName() .. " на разним специфичним језицима."
	else
		if self._source:getType() == "etymology language" then
			return "Изрази у " .. self._lang:getCanonicalName() .. " од које су наслеђени " .. self._source:getCanonicalName() .. "."
		else
			return "Изрази у " .. [[self._lang:getCanonicalName()|"ubaciti gramatiku"]] .. " које су наслеђене из [[:Категорија:" .. mw.getContentLanguage():ucfirst(self._source:getCategoryName()) .. "|" .. self._source:getCategoryName() .. "]]."
		end
	end
end


function Category:getParents()
	if self._lang then
		return {
			{name = require("Модул:category tree/poscatboiler").new({code = self._info.code, label = "наслеђени изрази"}), sort = self._source:getCanonicalName()},
			{name = require("Модул:category tree/derivcatboiler").new({code = self._info.code, label = self._source:getCode()}), sort = " "},
			}
	else
		return {{name = require("Модул:category tree/derivcatboiler").new({label = self._source:getCode()}), sort = " "}}
	end
end

function Category:getChildren()
	return nil
end


function Category:getUmbrella()
	if not self._lang then
		return nil
	end
	
	local uinfo = mw.clone(self._info)
	uinfo.code = nil
	return Category.new(uinfo)
end


return export