Modul:Tvar

Z Wikislovníku
Skočit na navigaci Skočit na vyhledávání

Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:Tvar

p = {}

local Languages = require ("Modul:Languages")
local Tvar = require ("Modul:Tvar/Seznam")

function p.printMain (frame)
	local parentFrame = frame:getParent()
	local templateArgs = parentFrame.args
	local title = mw.title.getCurrentTitle()
	local pageName = title.fullText
	
	local jazyk = templateArgs[1] 
	local slovniDruh = templateArgs[2] 
	local tvar =  templateArgs[3] 
	local word = templateArgs[4]
	
	local ErrorMsgs = {}
	local ErrorCats = {}
	local OtherCats = {}
	
	local out = ""
	
	if word == "" or word == nil then
		table.insert(ErrorMsgs,"Nezadáno slovo, k němuž se kategorie váže.")
		table.insert(ErrorCats, "[[Category:Monitoring:Šablona Tvar/Nezadáno slovo]]")
		word = false
	end
	
	if tvar == "" or tvar == nil then
		table.insert(ErrorMsgs,"Nezadán tvar.")
		table.insert(ErrorCats, "[[Category:Monitoring:Šablona Tvar/Nezadán tvar]]")
		tvar = false
	end
	
	if jazyk == "" or jazyk == nil then
		table.insert(ErrorMsgs,"Nezadán jazyk.")
		table.insert(ErrorCats, "[[Category:Monitoring:Šablona Tvar/Nezadán jazyk]]")
		jazyk = false
	else
		if Languages[jazyk] == nil then
			table.insert(ErrorMsgs,"Chybné zadání jazyka. (Pod parametrem „" .. jazyk .. "“ není na Wikislovníku veden žádný jazyk. <small>Pro seznam podporovaných jazyků vizte [[Wikislovník:Jazyky]].</small>)")
			table.insert(ErrorCats, "[[Category:Monitoring:Šablona Tvar/Neexistující jazyk]]")
			jazyk = false
		end
	end

	if slovniDruh == "" or slovniDruh == nil then
		table.insert(ErrorMsgs,"Nezadán slovní druh.")
		table.insert(ErrorCats, "[[Category:Monitoring:Šablona Tvar/Nezadán slovní druh]]")
		slovniDruh = false
	else
		if Tvar[slovniDruh] == nil then
			table.insert(ErrorMsgs,"Chybné zadání slovního druhu. (Slovní druh „" .. slovniDruh .. "“ není na Wikislovníku podporován. <small>Buď neexistuje, je nesklonný nebo jste se přepsali.</small>)")
			table.insert(ErrorCats, "[[Category:Monitoring:Šablona Tvar/Chybný slovní druh]]")
			slovniDruh = false
		end
		if slovniDruh and jazyk and tvar then
			local tvarVJazyceExistuje = false
			for a in pairs (Tvar[slovniDruh]["existing-categories"][jazyk]) do
				if Tvar[slovniDruh]["existing-categories"][jazyk][a] == tvar then
					tvarVJazyceExistuje = true
				end
			end
			if not tvarVJazyceExistuje then
				table.insert(ErrorMsgs,"V jazyce s kódem „" .. jazyk .. "“ (''" .. Languages[jazyk]["name"] .. "'') nemá ''" .. slovniDruh .. "'' tvar „" .. tvar .. "“.")
				table.insert(ErrorCats, "[[Category:Monitoring:Šablona Tvar/Chybný tvar]]")	
				slovniDruh = false
			end
		end	
	end

	if jazyk and slovniDruh and tvar and word then

		if Tvar[slovniDruh]["lang-specific-names"][jazyk] ~= nil then
			if Tvar[slovniDruh]["lang-specific-names"][jazyk][tvar] ~= nil and Tvar[slovniDruh]["lang-specific-names"][jazyk][tvar] ~= "" then
				out = Tvar[slovniDruh]["lang-specific-names"][jazyk][tvar]
			end
		else
			out = Tvar[slovniDruh]["default-names"][tvar]
		end
		
		local kategorieSlovniDruhJazyk = false
		if Languages[jazyk]["name_attr_gen_pl"] ~= nil and Languages[jazyk]["name_attr_gen_pl"] ~= "" then
			if not Languages[jazyk]["name_attr_written_behind"] then
				kategorieSlovniDruhJazyk = "[[Category:Tvary " .. Languages[jazyk]["name_attr_gen_pl"] .. " " .. Tvar[slovniDruh]["name-pl-gen"] .. "]]"
			else
				kategorieSlovniDruhJazyk = "[[Category:Tvary " .. Tvar[slovniDruh]["name-pl-gen"] .. " " .. Languages[jazyk]["name_attr_gen_pl"] .. "]]"
			end
			table.insert(OtherCats, kategorieSlovniDruhJazyk)
		else
			table.insert(ErrorCats, "[[Category:Monitoring:Šablona Tvar/Nezkategorizovaná hesla]]")
		end
		out = "''" .. out .. " " .. Tvar[slovniDruh]["name-sg-gen"] .. " [[" .. word .."]]''"
		
	end		
	local errors = ""
	if #ErrorMsgs > 0 or #ErrorCats > 0 then
		if #ErrorMsgs == 1 then
			errors = "Šablona [[Šablona:Tvar|Tvar]] obsahuje následující chybu: "
		elseif #ErrorMsgs > 1 then
			errors = "Šablona [[Šablona:Tvar|Tvar]] obsahuje následující chyby: "
		end
			
		for a in pairs (ErrorMsgs) do 
			errors = errors .. ErrorMsgs[a] .. " "
		end
		for a in pairs (ErrorCats) do
			errors = errors .. ErrorCats[a]
		end
	end
	if errors ~= "" and pageName ~= "Šablona:Tvar" then
		out = out .. errors
	end
	if #OtherCats > 0 then
		for a in pairs (OtherCats) do
			out = out .. OtherCats[a]
		end
	end
	return out
end

function p.printParams (frame)
	local out = ""
	local Kategorie = {}
	for a in pairs (Tvar) do
		table.insert(Kategorie, a)
	end
	table.sort(Kategorie)
	for a in pairs (Kategorie) do
		
		out = out .. "<h3>" .. Tvar[Kategorie[a]]["name-pl-nom"] .. "</h3>"
		out = out .. "<table class=\"wikitable sortable\">"
		out = out .. "<th>kód parametru</th><th>popis</th>"
		local Params = {}
		for b in pairs (Tvar[Kategorie[a]]["default-names"]) do
			table.insert(Params, {b,Tvar[Kategorie[a]]["default-names"][b]})
		end
		table.sort(Params, function(x, y) return x[1] < y[1] end)
		for n in pairs (Params) do
			out = out .. "<tr><td>" .. Params[n][1] .. "</td><td>" .. Params[n][2] .. "</td></tr>"
		end
		out = out .. "</table>"
		out = out .. ""
	end	
	return out
end
return p