مواد ڏانھن هلو

ماڊيول:Redirect hatnote

کليل ڄاڻ چيڪلي، وڪيپيڊيا مان


ھي ماڊيول ھڪ ھيٽ نوٽ تيار ڪري ٿو، جيڪو اُن صفحي جي ابهام ختم ڪرڻ لاءِ استعمال ٿيندو آھي، جنھن ڏانھن ڪنھن ڏنل ريڊائريڪٽ ذريعي ڳنڍيو ويو ھجي۔ ھي {{redirect}} ھيٽ نوٽ سانچي کي عمل ۾ آڻي ٿو۔

وڪي متن مان استعمال

ھي ماڊيول سڌو سنئون وڪي متن مان استعمال نٿو ڪري سگھجي۔ ان جي بدران {{redirect}} يا {{redirect2}} سانچا استعمال ڪريو۔

لُوا مان استعمال

ھن ماڊيول کي لُوا مان استعمال ڪرڻ لاءِ، سڀ کان پھريان ماڊيول لوڊ ڪريو۔

local mRedirectHatnote = require('ماڊيول:Redirect hatnote')

ان کان پوءِ ماڊيول کي ھيٺين نحو سان استعمال ڪري سگھجي ٿو:

mRedirectHatnote._redirect(redirect, data, options, titleObj)

پڻ ڏسو


--[[
-- ھي ماڊيول "redirect" ھيٽ نوٽ تيار ڪري ٿو. اھو ھن طرح نظر ايندو:
-- '"X" ھتي ريڊائريڪٽ ٿئي ٿو. ٻين استعمالن لاءِ، Y ڏسو.'
-- ھي {{redirect}} سانچي کي عمل ۾ آڻي ٿو.
--]]

local mHatnote = require('ماڊيول:Hatnote')
local mHatList = require('ماڊيول:Hatnote list')
local mArguments --lazily initialize
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti

local p = {}

--------------------------------------------------------------------------------
-- مددگار فنڪشن
--------------------------------------------------------------------------------

local function getTitle(...)
	-- mw.title.new کي سڏي ٿو ۽ يا تہ title object واپس ڪري ٿو، يا غلطي تي nil
	local success, titleObj = pcall(mw.title.new, ...)
	return success and titleObj or nil
end

--------------------------------------------------------------------------------
-- مکيه فنڪشن
--------------------------------------------------------------------------------

function p.redirect(frame)
	mArguments = require('ماڊيول:Arguments')
	local args = mArguments.getArgs(frame, {parentOnly=true})
	-- ريڊائريڪٽن جو تعداد حاصل ڪريو
	local numRedirects = tonumber(frame.args[1]) or 1
	-- اختيارن جي جدول ٺاھيو.
	local options = {}
	options.selfref = args.selfref
	return p._redirect(args, numRedirects, options)
end

function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle)
	-- اِن پُٽ جي تصديق ڪريو. currentTitle، redirectTitle يا
	-- targetTitle جي جاچ جي ضرورت ناھي، ڇو تہ اھي فقط 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()

	-- ريڊائريڪٽن جي جدول حاصل ڪريو
	local redirect = {}
	for i = 1, numRedirects do
		-- جيڪڏھن ريڊائريڪٽ وارو پيرا ميٽر غائب ھجي تہ غلطي واپس ڪريو.
		if not args[i] then
			return mHatnote.makeWikitextError(
				'ريڊائريڪٽ وارو پيرا ميٽر غائب آھي',
				'سانچو:Redirect#Errors',
				args.category
			)
		end
		redirect[i] = args[i]
	end

	-- متن تيار ڪريو.
	local formattedRedirect = {}
	for k,v in pairs(redirect) do
		formattedRedirect[k] = mHatnote.quote(v)
	end

	local text = {
		mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'ھتي ريڊائريڪٽ ٿئي ٿو.' or 'ھتي ريڊائريڪٽ ٿين ٿا.'),
		mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text})
	}

	text = table.concat(text, ' ')

	-- زمرا شامل ڪرڻ واري ڪارڪردگي
	local categoryTable = {}

	local function addCategory(cat)
		if cat and cat ~= '' then
			-- duplicates کان بچڻ لاءِ index ذريعي شامل ڪريو
			categoryTable[string.format('[[زمرو:%s]]', cat)] = true
		end
	end

	-- ٽريڪنگ وارا زمرا تيار ڪريو
	local mhOptions = {}
	local redirTitle

	for k,v in pairs(redirect) do
		-- جيڪڏھن سانچي جو استعمال سڌو دستاويزن مان نقل ڪيو ويو ھجي،
		-- يا اسان mainspace يا زمرو-فضا ۾ نه ھجون تہ tracking زمري جي ضرورت ناھي.
		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('ريڊائريڪٽ ھيٽ نوٽن وارا مضمون جيڪي RfD کان متاثر آھن')
				else
					addCategory('ريڊائريڪٽ ھيٽ نوٽن وارا مضمون جن کي جائزي جي ضرورت آھي')
				end

			else
				local target = targetTitle or redirTitle.redirectTarget
				if target and target ~= currentTitle then
					addCategory('ريڊائريڪٽ ھيٽ نوٽن وارا مضمون جن کي جائزي جي ضرورت آھي')
				end
			end
		end

		-- [[ماڊيول:Hatnote]] ڏانھن موڪلڻ لاءِ اختيار تيار ڪريو.
		if currentTitle.namespace == 0 and not mhOptions.selfref
			and redirTitle and redirTitle.namespace ~= 0
		then
			-- اسان mainspace صفحي تي آھيون، ۽ ھيٽ نوٽ ڪنھن اھڙي شيءِ سان شروع ٿئي ٿو
			-- جيئن "Wikipedia:Foo redirects here"، تنھنڪري ان کي خودڪار طور
			-- self-reference طور نشان لڳايو.
			mhOptions.selfref = true
		else
			mhOptions.selfref = options.selfref
		end
	end

	-- سڀ زمرا گڏ ڪريو
	local category = ''
	for k,v in pairs(categoryTable) do
		category = category .. k
	end

	return mHatnote._hatnote(text, mhOptions) .. category
end
 
return p