Documentation for this module may be created at વિભાગ:શ્રેણી ઝાડ/વિષય શ્રેણી/doc

local export = {}

local labels = {}

function export.get_item(info, item)
	local lang = (info.code and require("Module:ભાષાઓ").getByCode(info.code) or nil)
	local ret = nil
	
	if item == "label_exists" then
		if labels[info.label] then
			return true
		else
			local template = mw.title.new("ઢાંચો:વિષય શ્રેણી/" .. info.label)
			
			if template.exists then
				return true
			else
				return false
			end
		end
	elseif item == "નામ_પ્રદર્શન" then
		ret = info.label
		
		if info.sc then
			local sc = require("Module:લિપિઓ").getByCode(info.sc)
			ret = ret .. sc:getCategoryName() .. "માં"
		end
	elseif item == "મૂળભૂત" then
		ret = info.label
		
		if info.sc then
			local sc = require("Module:લિપિઓ").getByCode(info.sc)
			ret = ret .. sc:getCategoryName() .. "માં"
		end
		
		ret = lang:getCode() .. ":" .. mw.getContentLanguage():ucfirst(ret)
	elseif item == "છત્રી" then
		ret = mw.getContentLanguage():ucfirst(info.label)
	elseif item == "છત્રી_વર્ણન" then
		ret =
			"This category contains only other categories, no dictionary entries. Its subcategories are on the topic: " .. info.label .. ". They are of two sorts:\n\n" ..
			"* Subcategories named like \"aa:" .. info.label .. " (with a prefixed language code) are categories of terms in specific languages. " ..
			"For example, \"fr:" .. info.label .. " is the " .. info.label .. "-related category of French terms. " ..
			"You may be interested especially in [[:Category:" .. export.get_item({code = "gu", label = info.label, sc = nil, template = info.template}, "મૂળભૂત") .. "]], for Gujarati terms.\n" ..
			"* Subcategories of this one named without the prefixed language code are further categories just like this one, but devoted to topics finer than " .. info.label .. "."
	elseif item == "છત્રી-શ્રેણીકરણ" then
		ret = "સમાંતર"
	elseif item == "વર્ણન" then
		if labels[info.label] then
			ret = labels[info.label].description
			
			if ret and (ret:find("{{{ભાષાનામ}}}") or ret:find("{{{ભાષાશ્રેણી}}}")) then
				if not lang then
					return nil
				end
				
				ret = ret:gsub("{{{ભાષાનામ}}}", lang:getCanonicalName())
				ret = ret:gsub("{{{ભાષાશ્રેણી}}}", lang:getCategoryName())
			end
		else
			ret = mw.getCurrentFrame():expandTemplate{title = "વિષય શ્રેણી/" .. info.label, args = {item, code = info.code or "", label = info.label or "", sc = info.sc or "", langname = lang and lang:getCanonicalName() or nil, langcat = lang and lang:getCategoryName() or nil}}
			if ret == "" then ret = nil end
		end
		
		if ret == "ધોરણ" then
			ret = mw.getCurrentFrame():expandTemplate{title = "વિષય શ્રેણી વર્ણન/ધોરણ", args = {item, code = info.code or "", label = info.label or "", sc = info.sc or "", langname = lang and lang:getCanonicalName() or nil, langcat = lang and lang:getCategoryName() or nil}}
		elseif ret == "ધોરણ વિષયની જોડે" then
			ret = mw.getCurrentFrame():expandTemplate{title = "વિષય શ્રેણી વર્ણન/ધોરણ વિષયની જોડે", args = {item, code = info.code or "", label = info.label or "", sc = info.sc or "", langname = lang and lang:getCanonicalName() or nil, langcat = lang and lang:getCategoryName() or nil}}
		end
	elseif item == "પૂર્વજ૯" then
		if info.label ~= "વિષયોની સુચિ" then
			ret = "વિષયોની સુચિ"
		end
	elseif item == "edit" then
		if labels[info.label] then
			ret = labels[info.label].edit
		else
			ret = "ઢાંચો:વિષય શ્રેણી/" .. info.label
		end
	else
		if labels[info.label] then
			ret = labels[info.label][item]
			
			if ret and (ret:find("{{{ભાષાનામ}}}") or ret:find("{{{ભાષાશ્રેણી}}}")) then
				if not lang then
					return nil
				end
				
				ret = ret:gsub("{{{ભાષાનામ}}}", lang:getCanonicalName())
				ret = ret:gsub("{{{ભાષાશ્રેણી}}}", lang:getCategoryName())
			end
		else
			ret = mw.getCurrentFrame():expandTemplate{title = "વિષય શ્રેણી/" .. info.label, args = {item, code = info.code or "", label = info.label or "", sc = info.sc or "", langname = lang and lang:getCanonicalName() or nil, langcat = lang and lang:getCategoryName() or nil}}
			if ret == "" then ret = nil end
		end
	end
	
	return ret
end

labels["સહુ વિષયો"] = {
	description = "This is the root category for all {{{ભાષાનામ}}} terms organized by topics such as \"પ્રાણી\" or \"રસાયણ\".",
	parentbyname1 = "{{{ભાષાશ્રેણી}}}",
	edit = "Module:શ્રેણી ઝાડ/વિષય શ્રેણી",
}

labels["વિષયોની સુચિ"] = {
	description = "All topics currently available in {{{ભાષાનામ}}}.",
	parent1 = "સહુ વિષયો",
	sortparent1 = "**",
	edit = "Module:શ્રેણી ઝાડ/વિષય શ્રેણી",
}


local subpages = {
	"શરીર",
	"સંસ્કૃતિ",
	"પૃથ્વી",
	"સજીવ",
	"ગણિત",
	"નિસર્ગ",
	"સ્થાન નામ",
	"વિજ્ઞાન",
	"સમાજ",
	"રમત",
	"પ્રૌદ્યોગિકી",
}

for _, subpage in ipairs(subpages) do
	for key, data in pairs(require("Module:શ્રેણી ઝાડ/વિષય શ્રેણી/" .. subpage)) do
		assert(not labels[key], "પ્રતિકૃતિ લેબલ: " .. key)
		data.edit = "Module:શ્રેણી ઝાડ/વિષય શ્રેણી/" .. subpage
		labels[key] = data
	end
end

return export