सामग्री पर जाएँ

मॉड्यूल:category tree/poscatboiler/data/families

विक्षनरी से

"इस मॉड्यूल हेतु प्रलेख मॉड्यूल:category tree/poscatboiler/data/families/doc पर बनाया जा सकता है"

local raw_categories = {}
local raw_handlers = {}



-----------------------------------------------------------------------------
--                                                                         --
--                              RAW CATEGORIES                             --
--                                                                         --
-----------------------------------------------------------------------------


raw_categories["सभी भाषा परिवार"] = {
	intro = "{{sisterlinks|Category:Languages by family}}\n{{wikipedia|भाषा-परिवार|भाषा परिवार}}",
	description = "इस श्रेणी में सभी [[भाषा परिवार]] हैं।",
	parents = {"मूलभूत श्रेणी"},
}

raw_categories["भाषाएँ परिवार अनुसार"] = {
	intro = "{{sisterlinks|Category:Languages by family}}\n{{wikipedia|भाषा-परिवार|भाषा परिवार}}",
	description = "इस श्रेणी में वे सभी श्रेणियाँ पदानुक्रम अनुसार रखी गयी हैं जो जिस [[भाषा परिवार]] के अंतर्गत आती हैं।",
	additional = "केवल ऊपरी-स्तर (टॉप-लेवल) के परिवार यहाँ सूचीबद्ध हैं। भाषा परिवारों की पूरी सूची के लिए, देखें [[:श्रेणी:सभी भाषा परिवार]] अथवा [[विक्षनरी:भाषा परिवारों की सूची]]।",
	parents = {
		{name = "सभी भाषाएँ", sort = " "},
		{name = "सभी भाषा परिवार", sort = " "},
	},
}



-----------------------------------------------------------------------------
--                                                                         --
--                                RAW HANDLERS                             --
--                                                                         --
-----------------------------------------------------------------------------


local function family_is_not_a_family(fam)
	local famcode = fam:getCode()
	if famcode == "paa" then
		return false -- Papuan languages are not a family but have a category
	elseif famcode == "qfa-iso" or famcode == "qfa-not" then
		return true
	else
		local parfam = fam:getFamily()
		if parfam and parfam:getCode() == "qfa-not" then
			-- Constructed languages, sign languages, etc.; no category for them
			return true
		end
	end
	return false
end

	
local function infobox(fam)
	local ret = {}
	
	table.insert(ret, "<table class=\"wikitable\">\n")
	table.insert(ret, "<tr>\n<th colspan=\"2\" class=\"plainlinks\">[//hi.wiktionary.org/w/index.php?title=Module:families/data&action=edit परिवार आँकड़ा संपादन]</th>\n</tr>\n")
	table.insert(ret, "<tr>\n<th>चलन का नाम</th><td>" .. fam:getCanonicalName() .. "</td>\n</tr>\n")
	
	local otherNames = fam:getOtherNames(true)
	if otherNames then
		local names = {}
		
		for _, name in ipairs(otherNames) do
			table.insert(names, "<li>" .. name .. "</li>")
		end
		
		if #names > 0 then
			table.insert(ret, "<tr>\n<th>अन्य नाम</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
		end
	end
	
	local aliases = fam:getAliases()
	if aliases then
		local names = {}
		
		for _, name in ipairs(aliases) do
			table.insert(names, "<li>" .. name .. "</li>")
		end
		
		if #names > 0 then
			table.insert(ret, "<tr>\n<th>पुकारनाम</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
		end
	end

	local varieties = fam:getVarieties()
	if varieties then
		local names = {}
		
		for _, name in ipairs(varieties) do
			if type(name) == "string" then
				table.insert(names, "<li>" .. name .. "</li>")
			else
				assert(type(name) == "table")
				local first_var
				local subvars = {}
				for i, var in ipairs(name) do
					if i == 1 then
						first_var = var
					else
						table.insert(subvars, "<li>" .. var .. "</li>")
					end
				end
				if #subvars > 0 then
					table.insert(names, "<li><dl><dt>" .. first_var .. "</dt>\n<dd><ul>" .. table.concat(subvars, "\n") .. "</ul></dd></dl></li>")
				elseif first_var then
					table.insert(names, "<li>" .. first_var .. "</li>")
				end
			end
		end
		
		if #names > 0 then
			table.insert(ret, "<tr>\n<th>Varieties</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
		end
	end

	table.insert(ret, "<tr>\n<th>[[विक्षनरी:भाषा परिवार|परिवार कोड]]</th><td><code>" .. fam:getCode() .. "</code></td>\n</tr>\n")
	table.insert(ret, "<tr>\n<th>[[w:Proto-language|साझा पूर्वज]]</th><td>")
	
	local protoLanguage = fam:getProtoLanguage()
	
	if protoLanguage then
		table.insert(ret, "[[:श्रेणी:" .. protoLanguage:getCategoryName() .. "|" .. protoLanguage:getCanonicalName() .. "]]")
	else
		table.insert(ret, "none")
	end
	
	table.insert(ret, "</td>\n")
	table.insert(ret, "\n</tr>\n")
	
	local parent = fam:getFamily()
	
	if not parent then
		table.insert(ret, "<tr>\n<th>[[विक्षनरी:भाषा परिवार|पितृ परिवार]]</th>\n<td>")
		table.insert(ret, "अवर्गीकृत")
	elseif parent:getCode() == "qfa-not" then
		table.insert(ret, "<tr>\n<th>[[विक्षनरी:भाषा परिवार|पितृ परिवार]]</th>\n<td>")
		table.insert(ret, "कोई परिवार नहीं")
	else
		local chain = {}
		while parent do
			if family_is_not_a_family(parent) then
				break
			end
			table.insert(chain, "[[:श्रेणी:" .. parent:getCategoryName() .. "|" .. parent:getCanonicalName() .. "]]")
			parent = parent:getFamily()
		end
		if #chain == 0 then
			table.insert(ret, "<tr>\n<th>[[विक्षनरी:भाषा परिवार|पितृ परिवार]]</th>\n<td>")
			table.insert(ret, "no parents")
		else
			table.insert(ret, "<tr>\n<th>[[विक्षनरी:भाषा परिवार|पितृ परिवा"
				.. (#chain == 1 and "र" or "र") .. "]]</th>\n<td>")
			
			for i = #chain, 1, -1 do
				table.insert(ret, "<ul><li>" .. chain[i])
			end
			table.insert(ret, string.rep("</li></ul>", #chain))
		end
	end
	
	table.insert(ret, "</td>\n</tr>\n")
	
	if fam:getWikidataItem() and mw.wikibase then
		local link = '[' .. mw.wikibase.getEntityUrl(fam:getWikidataItem()) .. ' ' .. fam:getWikidataItem() .. ']'
		table.insert(ret, "<tr><th>विकिडेटा</th><td>" .. link .. "</td></tr>")
	end
	
	table.insert(ret, "</table>")
	
	return table.concat(ret)
end


table.insert(raw_handlers, function(data)
	local family_name = data.category:match("^(.+) भाषाएँ$")
	if not family_name then
		family_name = data.category:match("^(.+ भाषाएँ)$")
	end
	if not family_name then
		return nil
	end
	local family = require("Module:families").getByCanonicalName(family_name) or
		require("Module:families").getByCanonicalName(mw.ustring.lower(family_name))
	if not family then
		return nil
	end

	local parent_fam = family:getFamily()
	local first_parent
	
	if not parent_fam or family_is_not_a_family(parent_fam) then
		first_parent = "भाषाएँ परिवार अनुसार"
	else
		first_parent = parent_fam:getCategoryName()
	end

	local intro, description, additional = "", "", ""
	if not data.called_from_inside then
		local wikipedia_art = family:getWikipediaArticle()
		intro = "{{sisterlinks|" .. family:getCategoryName() .. "}}\n{{wikipedia|" .. wikipedia_art .. "}}"
		description = "यह एक प्रमुख श्रेणी है जिसका [[भाषा परिवार]] है: '''" .. family:getDisplayForm() .. "''' "
		additional = "" .. family:getCanonicalName() .. " के बारे में जानकारी:\n\n" .. infobox(family)
	end
		
	return {
		intro = intro,
		description = description,
		additional = additional,
		parents = {
			first_parent,
			"सभी भाषा परिवार",
		},
		breadcrumb = family:getCanonicalName(),
		can_be_empty = true,
	}
end)


return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}