--[[ -- এই মডিউল একটি “পুনর্নির্দেশ” টীকা তৈরি করে। এটি দেখতে এরকম: -- '“ক” শিরোনামকে এখানে পুনর্নির্দেশ করা হয়েছে। অন্য ব্যবহারের জন্য খ দেখুন।' -- এটি  টেমপ্লেট কার্যকর করে। --]]  local mHatnote = require('Module:Hatnote') local mHatList = require('মডিউল:হাটনোট তালিকা') local mArguments --lazily initialize local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti  local p = {}  local function getTitle(...) 	local success, titleObj = pcall(mw.title.new, ...) 	if success then 		return titleObj 	else 		return nil 	end end  function p.redirect(frame) 	mArguments = require('Module:Arguments') 	local args = mArguments.getArgs(frame, {parentOnly=true}) 	--Get number of redirects 	local numRedirects = tonumber(frame.args[1]) or 1 	-- Create the options table. 	local options = {} 	options.selfref = args.selfref 	return p._redirect(args, numRedirects, options) end  function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle) 	-- Validate the input. Don't bother checking currentTitle, redirectTitle or 	-- targetTitle, as they are only used in testing. 	checkType('_redirect', 1, args, 'table') 	checkType('_redirect', 2, numRedirects, 'number', true) 	numRedirects = numRedirects or 1 	checkType('_redirect', 3, options, 'table', true) 	options = options or {} 	currentTitle = currentTitle or mw.title.getCurrentTitle() 	-- Get the table of redirects 	local redirect = {} 	for i = 1, numRedirects do 		-- Return an error if a redirect parameter is missing. 		if not args[i] then 			return mHatnote.makeWikitextError( 				'পুনর্নির্দেশ পরামিতি অনুপস্থিত', 				'টেমপ্লেট:পুনর্নির্দেশ#ত্রুটি', 				args.category 			) 		end 		redirect[i] = args[i] 	end 	-- Generate the text. 	local formattedRedirect = {} 	for k,v in pairs(redirect) do 		formattedRedirect[k] = '"' .. v .. '"' 	end 	local text = { 		mHatList.andList(formattedRedirect) .. ' শিরোনামকে এখানে পুনর্নির্দেশ করা হয়েছে।', 		mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text}) 	} 	text = table.concat(text, ' ') 	-- Functionality for adding categories	 	local categoryTable = {} 	local function addCategory(cat) 		if cat and cat ~=  then 			-- Add by index to avoid duplicates 			categoryTable[string.format('বিষয়শ্রেণী:%s', cat)] = true 		end 	end 	--Generate tracking categories 	local mhOptions = {} 	local redirTitle 	for k,v in pairs(redirect) do 		-- We don't need a tracking category if the template invocation has been 		-- copied directly from the docs, or if we aren't in main- or category-space. 		if not v:find('^REDIRECT%d*$') and v ~= 'TERM' --  			and currentTitle.namespace == 0 or currentTitle.namespace == 14 		then 			redirTitle = redirectTitle or getTitle(v) 			if not redirTitle or not redirTitle.exists then 				addCategory('পুনর্নির্দেশ অনুপস্থিত') 			elseif not redirTitle.isRedirect then 				if string.find(redirTitle:getContent(), '#invoke:RfD') then 					addCategory('Articles with redirect hatnotes impacted by RfD') 				else 					addCategory('পুনর্নির্দেশ হ্যাটনোটসহ নিবন্ধের পর্যালোচনা প্রয়োজন') 				end 			else 				local target = targetTitle or redirTitle.redirectTarget 				if target and target ~= currentTitle then 					addCategory('পুনর্নির্দেশ হ্যাটনোটসহ নিবন্ধের পর্যালোচনা প্রয়োজন') 				end 			end 		end  		-- Generate the options to pass to Module:Hatnote. 		if currentTitle.namespace == 0 and not mhOptions.selfref 			and redirTitle and redirTitle.namespace ~= 0 		then 			-- We are on a mainspace page, and the hatnote starts with something 			-- like "Wikipedia:Foo redirects here", so automatically label it as 			-- a self-reference. 			mhOptions.selfref = true 		else 			mhOptions.selfref = options.selfref 		end 	end 	--concatenate all the categories 	local category =  	for k,v in pairs(categoryTable) do 		category = category .. k 	end  	return mHatnote._hatnote(text, mhOptions) .. category end   return p