پودمان:Redirect hatnote

توضیحات پودمان[ایجاد] [پاکسازی]
--[[
-- This module produces a "redirect" hatnote. It looks like this:
-- '"X" redirects here. For other uses, see Y.'
-- It implements the {{redirect}} template.
--]]

local mHatnote = require('Module:Hatnote')
local mHatList = require('Module:Hatnote list')
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, ...)
	return success and titleObj or nil
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 or args['خودارجاع']
	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 or args['رده']
			)
		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) .. ' ' .. (#redirect == 1 and 'به اینجا تغییرمسیر دارد.' or 'به اینجا تغییرمسیر دارند.'),
		mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text or args['متن']})
	}
	text = table.concat(text, ' ')
	-- Functionality for adding categories	
	local categoryTable = {}
	function addCategory(cat)
		if cat and cat ~= '' then
			-- Add by index to avoid duplicates
			categoryTable[mw.ustring.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 (mw.ustring.find(v, '^REDIRECT%d*$') or mw.ustring.find(v, '^عنوان‌تغییرمسیربه‌اینجا%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 mw.ustring.find(redirTitle:getContent(), '#(invoke|درخواست):RfD') then
					addCategory('مقاله‌های دارای سرنویس تغییرمسیر تحت تأثیر نبح')
				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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy