Modul:category tree/scriptcatboiler

--Modul usang, telah diganti dengan Module:category tree/poscatboiler/data/scripts

--local export = {}

--local labels = require("Module:category tree/scriptcatboiler/data")


-- 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._sc = require("Module:scripts").getByCode(val) or error("The script code \"" .. val .. "\" is not valid.")
--		elseif key == "label" then
--			self._info.label = val
--			self._data = labels[self._info.label]
--		else
--			error("The parameter \"" .. key .. "\" was not recognized.")
--		end
--	end
	
	-- Check if the label exists
--	if not self._info.label then
--		error("No label was specified.")
--	elseif not self._data then
--		return nil
--	end
	
--	if self._info.label == "ROOT" and not self._sc then
--		return nil
--	end
	
--	return self
--end

--export.new = Category.new


--function Category:getInfo()
--	return self._info
--end


--function Category:getBreadcrumbName()
--	if self._info.label == "ROOT" then
--		return self._sc:getCategoryName()
--	else
--		return self._info.label
--	end
--end


--function Category:getDataModule()
--	return "Module:category tree/scriptcatboiler/data"
--end


--function Category:canBeEmpty()
--	return self._info.label == "ROOT"
--end


--function Category:isHidden()
--	return self._data["hidden"] and self._info.code
--end


--function Category:getCategoryName()
--	if self._sc then
--		local ret = nil
		
--		if self._info.label ~= "ROOT" then
--			ret = " " .. self._info.label
--		end
		
--		return mw.getContentLanguage():ucfirst(self._sc:getCategoryName() .. (ret or ""))
--	else
--		return mw.getContentLanguage():ucfirst(self._info.label .. " by script")
--	end
--end


--function Category:getDescription()
--	if self._sc then
--		local ret = self._data["description"]
		
--		if ret then
--			if ret:find("{{{code}}}") then ret = ret:gsub("{{{code}}}", self._sc:getCode()) end
--			if ret:find("{{{scname}}}") then ret = ret:gsub("{{{scname}}}", self._sc:getCanonicalName()) end
--			if ret:find("{{{sccat}}}") then ret = ret:gsub("{{{sccat}}}", self._sc:getCategoryName()) end
--			
--			if self._info.label == "ROOT" then
--				local systems = self._sc:getSystems()
--				if #systems > 0 then
--					ret = ret .. "\n\nThis script mainly belongs to the following systems: "
--					for i,system in ipairs(systems) do
--						if i ~= 1 then
--							ret = ret .. ", "
--						end
--						ret = ret .. systems[i]:getCanonicalName() .. "[[Category:" .. systems[i]:getCategoryName() .. "]]"
--					end
--				end
--			end
--		end
		
--		return ret
--	else
--		return "Categories with " .. self._info.label .. " of various specific scripts."
--	end
--end


--function Category:getParents()
--	if self._sc then
--		local parents = self._data["parents"]
		
--		if not parents or #parents == 0 then
--			return nil
--		end
		
--		local ret = {}
		
--		for key, parent in ipairs(parents) do
--			local parent = mw.clone(parent)
			
--			if type(parent) ~= "table" then
--				parent = {name = parent}
--			end
			
--			if not parent.sort then
--				parent.sort = self._info.label
--			end
			
--			parent.sort = parent.sort:gsub("{{{scname}}}", self._sc:getCanonicalName())
--			parent.sort = parent.sort:gsub("{{{sccat}}}", self._sc:getCategoryName())
			
--			if parent.name and parent.name:find("^Category:") then
--				parent.name = parent.name:gsub("{{{scname}}}", self._sc:getCanonicalName())
--				parent.name = parent.name:gsub("{{{sccat}}}", self._sc:getCategoryName())
--			else
--				local pinfo = mw.clone(self._info)
--				pinfo.label = parent.name
				
--				if parent.template then
--					parent.name = require("Module:category tree/" .. parent.template).new(pinfo)
--				else
--					parent.name = Category.new(pinfo)
--				end
--			end
			
--			table.insert(ret, parent)
--		end
		
--		return ret
--	else
--		if self._data["asas"] then
--			return {{name = "Kategori:" .. self._data["asas"], sort = self._data["sortparentumbrella"] or self._info.label}}
--		else
--			return nil
--		end
--	end
--end


--function Category:getChildren()
--	local children = self._data["children"]
	
--	if not self._sc or not children or #children == 0 then
--		return nil
--	end
	
--	local ret = {}
	
--	for _, child in ipairs(children) do
--		child = mw.clone(child)
		
--		if type(child) ~= "table" then
--			child = {name = child, sort = child}
--		end
		
--		local cinfo = mw.clone(self._info)
--		cinfo.label = child.name
--		child.name = Category.new(cinfo)
		
--		table.insert(ret, child)
--	end
	
--	return ret
--end


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


--return export