Bu modul uchun Modul:Telemavsum nomi/doc nomli hujjat sahifasini yaratishingiz mumkin

function qavs(yozuv) return "("..yozuv..")" end

-- 
function maqolaMavjudmi(yozuv)
	local maqola = mw.title.new(yozuv)
	if (maqola ~= nil and maqola.exists) then
		local moljal = maqola.redirectTarget
		if (moljal) then
			local tamBag = moljal.fullText
			local sarlavhaMi = tamBag:find("#")
			if (sarlavhaMi) then
				return "true"							 
			else
				return nil								 
			end
		else
			return "true"								 
		end
	else
		return nil											 
	end
end

function ishoratQosh(ishorat, yozuv)
	return "[[" .. ishorat .. "|" .. yozuv .. "]]"
end

function serialNomi(yozuv, par)
	local teleserial = mw.ustring.gsub( yozuv, "%(.*", "" )
	
	teleserial = mw.ustring.gsub( teleserial, "%|.*", "" )
	teleserial = mw.ustring.gsub( teleserial, "%[", "" )
	teleserial = mw.ustring.gsub( teleserial, "%]", "" )
	
	if mavsumSoniniTop(yozuv).qosh and mw.ustring.find(mavsumSoniniTop(yozuv).qosh, "teleserial,%s%d%d%d%d") then
		teleserial = teleserial .. (par and qavs(mavsumSoniniTop(yozuv).qosh) or "")
	end
	
	if mw.ustring.find(teleserial, ":%s") then
		teleserial = mw.ustring.gsub( yozuv, "%:.*", "" )
	end
	
	return teleserial
end

function mavsumSoniniTop(yozuv)
	 
	local mavsumSoni = mw.ustring.gsub( mw.ustring.gsub( yozuv, ".*%(", "" ), "%).*", "" )
	
	 
	local mavsumQosh
	
	mavsumSoni = mw.ustring.gsub( mavsumSoni, "%-mavsum", "" )
	
	 
	if type(tonumber(mavsumSoni)) ~= "number" then
		 
		mavsumQosh = mw.ustring.gsub( mavsumSoni, "%,[^,]-$", "" )
		mavsumSoni = mw.ustring.gsub( mavsumSoni, ".*%,[%s]", "" )
	end
	
	return {no = tonumber(mavsumSoni), qosh = mavsumQosh}
end

function noKeyingisi(yozuv)
	return tonumber(mavsumSoniniTop(yozuv).no) and mavsumSoniniTop(yozuv).no + 1 or ""
end

function noAvvalgisi(yozuv)
	return tonumber(mavsumSoniniTop(yozuv).no) and mavsumSoniniTop(yozuv).no - 1 or ""
end

function qismlarRoyxati(frame)
	local yozuv = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text
	
	return maqolaMavjudmi(serialNomi(yozuv, true) .. " qismlari roʻyxati")
		and ishoratQosh(serialNomi(yozuv, true) .. " qismlari roʻyxati", "''" .. serialNomi(yozuv) .. "'' qismlari")
end

function avvalgisi(frame)
	local yozuv = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text
	
	local sahifa = serialNomi(yozuv)
		.. qavs((mavsumSoniniTop(yozuv).qosh and mavsumSoniniTop(yozuv).qosh..", " or "")
		.. noAvvalgisi(yozuv) .. "-mavsum")
	local acik = noAvvalgisi(yozuv) .. "-mavsum"
	return maqolaMavjudmi(sahifa) and ishoratQosh(sahifa, acik) or nil
end

function hozirgisi(frame)
	local teleserial = serialNomi(mw.getCurrentFrame().args[1])
	local mavsum = mw.getCurrentFrame().args[2]
	local natija
	
	if maqolaMavjudmi(mw.ustring.gsub( teleserial, "%)", "" ) .. ", " .. mavsum .. "-mavsum)") then
		natija = mw.ustring.gsub( teleserial, "%)", "" ) .. ", " .. mavsum .. "-mavsum)"
	else
		teleserial = mw.ustring.gsub( teleserial, "%(.*", "" )
		natija = teleserial .. " " .. qavs(mavsum .. "-mavsum")
	end
	
	return ishoratQosh(natija, "''" .. mw.ustring.gsub( teleserial, "%(.*", "" ) .. "'' " .. qavs(mavsum .. "-mavsum"))
end

function keyingisi(frame)
	local yozuv = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text
	
	local sahifa = serialNomi(yozuv)
		.. qavs((mavsumSoniniTop(yozuv).qosh and mavsumSoniniTop(yozuv).qosh..", " or "")
		.. noKeyingisi(yozuv) .. "-mavsum")
	local acik = noKeyingisi(yozuv) .. "-mavsum"
	return maqolaMavjudmi(sahifa) and ishoratQosh(sahifa, acik) or nil
end

function mavsumSoni(frame)
	local yozuv = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text
	local onek = ""
	
	if mavsumSoniniTop(yozuv).qosh then
		onek = mw.ustring.find(mavsumSoniniTop(yozuv).qosh, "teleserial") and "" or mavsumSoniniTop(yozuv).qosh .. ", "
	end
	
	return onek .. (mavsumSoniniTop(yozuv).no or "") .. "-mavsum"
end

function sarlavha(frame)
	local yozuv = mw.getCurrentFrame().args[1] or mw.title.getCurrentTitle().text

	local turkum = {}
	
	if maqolaMavjudmi("Turkum:" .. serialNomi(yozuv, true) .. " mavsumlari") then
		table.insert(turkum, "[[Turkum:".. serialNomi(yozuv, true) .. " mavsumlari]]")
	end
	
	return serialNomi(yozuv) .. table.concat(turkum)
end

-- turkum
function sana(frame)
	local sana = mw.getCurrentFrame().args[1]
	local turi = mw.getCurrentFrame().args[2]

	local turlari = {["mavsum"] = "mavsumlari", ["qism"] = "qismlari"}
	local turkum = {}
	
	if mw.ustring.find(sana, "%d%d%d%d") and mw.title.getCurrentTitle().nsText ~= "Andoza" then
		table.insert(turkum, "[[Turkum:".. mw.ustring.match(sana, "%d%d%d%d") .. " televizion " .. turlari[turi] .. "]]")
	end
	
	return sana .. table.concat(turkum)
end

return {
	sana = sana,
	sarlavha = sarlavha,
	mavsumSoni = mavsumSoni,
	qismlarRoyxati = qismlarRoyxati,
	avvalgisi = avvalgisi,
	keyingisi = keyingisi,
	hozirgisi = hozirgisi
}