انتقل إلى المحتوى

وحدة:category tree/famcatboiler

من ويكاموس، القاموس الحر
local export = {}

-- Category object

local Category = {}
Category.__index = Category


function Category.new(info)
	local self = setmetatable({}, Category)
	assert(type(info) == "table", "The \"info\" parameter must be a table.")
	self._info = {}
	
	for key, val in pairs(info) do
		if key == "code" then
			self._info.code = val
			self._fam = require("Module:families").getByCode(val) or error("The family code \"" .. val .. "\" is not valid.")
		else
			error("The parameter \"" .. key .. "\" was not recognized.")
		end
	end
	
	return self
end

export.new = Category.new


function Category:getBreadcrumbName()
	if not self._fam then
		return "languages by family"
	else
		return self._fam:getCanonicalName()
	end
end


function Category:getDataModule()
	return "Module:category tree/famcatboiler"
end


function Category:canBeEmpty()
	return true
end


function Category:getCategoryName()
	local ret = nil
	
	if not self._fam then
		ret = "languages by family"
	else
		ret = self._fam:getCategoryName()
	end
	
	return mw.getContentLanguage():ucfirst(ret)
end


function Category:getDescription()
	if not self._fam then
		return "This is the main category for all languages on Wiktionary, sorted by their language families."
	else
		local ret =
			mw.getCurrentFrame():expandTemplate{title = "sisterlinks", args = {self._fam:getCategoryName()}} ..
			mw.getCurrentFrame():expandTemplate{title = "wikipedia", args = {}} ..
			"This is the main category of the '''" .. self._fam:getCategoryName() .. "''', " ..
			"represented in Wiktionary by the code '''" .. self._fam:getCode() .. "'''. It is "
		
		if self._fam:getFamily():getCode() == "qfa-not" then
			ret = ret .. "a grouping of unrelated languages, rather than a family."
		elseif self._fam:getFamily():getCode() == "qfa-und" then
			ret = ret .. "an [[:Category:Languages by family|unclassified or primary language family]]."
		else
			ret = ret .. "a subfamily of the [[:Category:" .. mw.getContentLanguage():ucfirst(self._fam:getFamily():getCategoryName()) .. "|" .. self._fam:getFamily():getCategoryName() .. "]]."
		end
		
		return ret
	end
end


function Category:getParents()
	if not self._fam then
		return nil
	else
		local pinfo = mw.clone(self._info)
		
		if self._fam:getFamily():getCode() == "qfa-iso" or self._fam:getFamily():getCode() == "qfa-not" or self._fam:getFamily():getCode() == "qfa-und" then
			pinfo.code = nil
		else
			pinfo.code = self._fam:getFamily():getCode()
		end
		
		return {{name = Category.new(pinfo), sort = self._fam:getCanonicalName()}}
	end
end


function Category:getChildren()
	return nil
end


function Category:getUmbrella()
	return "Category:All language families"
end


return export