模組:Category tree/charactercat

local export = {}

-- Category object

local Category = {}
Category.__index = Category


function Category.new_main(frame)
	local pagename = mw.title.getCurrentTitle().text
	local initial, character, langName, ending = mw.ustring.match(pagename, "^(.+)「(.)」的(.+)(詞條?)$")
	
	local lang =  require("Module:languages").getByCanonicalName(langName) or error('頁面標題中的語言名稱"' .. langName .. '"無效。')
		
	return Category.new{
		lang = lang,
		initial = initial,
		ending = ending,
		label = character,
	}
end


function Category.new(info)
	local validKeys = {
		lang = true,
		initial = true,
		ending = true,
		label = true,
	}
	for key, val in pairs(info) do
		if not validKeys[key] then
			error("參數\"" .. key .. "\"無效。")
		end
	end
	
	local self = setmetatable({}, Category)
	self._info = info
	
	if self._info.lang then
		self._lang = self._info.lang
		self._info.lang = nil
	else
		error("No language code or language object was given to the function Category.new.")
	end
	
	return self
end

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


function Category:getInfo()
	return self._info
end


function Category:getBreadcrumbName()
	return self._info.label
end


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


function Category:canBeEmpty()
	return false
end


function Category:isHidden()
	return false
end

function Category:getCategoryName()
	return self._info.initial .. "「" .. self._info.label .. "」" .. "的" .. self._lang:getCanonicalName() .. self._info.ending
end

function Category:getDescription()
	return "本分類列出含有漢字「[[" .. self._info.label .. "]]」的" .. self._lang:getCanonicalName() .. "詞彙。"
end


function Category:getParents()
	return {
		{
			name = require("Module:category tree/poscatboiler")
				.new {
					code = self._info.code or self._lang:getCode(),
					label = "按漢字分類的",
				},
			sort = self._lang:makeSortKey(self._info.label)
		}
	}
end


function Category:getChildren()
	return nil
end


function Category:getUmbrella()
	return nil
end


return export