مسابقه دانش‌دخت
اسلامیکال از تاریخ ۱۵ دی تا ۲۰ بهمن، میزبان یک همایه با موضوع زنان است. شما می‌توانید در مسابقه مقاله‌نویسی دانش‌دخت، شرکت کنید و با نگارش مقاله، از جوایز آن بهره‌مند باشید. اگر به موضوعات مربوط با زنان علاقه‌مندید، این فرصت را از دست ندهید. فهرستی از مقالات پیشنهادی جهت ایجاد یا ویرایش در اینجا وجود دارد.

پودمان:Redirect template

از اسلامیکال
نسخهٔ تاریخ ‏۱۲ ژانویهٔ ۲۰۲۳، ساعت ۱۵:۵۹ توسط Mojtabakd (بحث | مشارکت‌ها) (ایجاد پودمان)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

توضیحات این پودمان می‌تواند در پودمان:Redirect template/توضیحات قرار گیرد.

require('Module:No globals')

local p = {}

-- key is beginning of arg name. value is table with namespace number and link
-- alternatively, a function taking the namespace number and returning a validity
-- can be used
local namespaceCategories = {
	all = { function() return true end },
	['همه'] = { function() return true end },
	main = { 0, '[[ویکی‌پدیا:مقاله چیست؟|اصلی]]' },
	['اصلی'] = { 0, '[[ویکی‌پدیا:مقاله چیست؟|اصلی]]' },
	help = { 12, '[[ویکی‌پدیا:فضای نام راهنما|راهنما]]' },
	['راهنما'] = { 12, '[[ویکی‌پدیا:فضای نام راهنما|راهنما]]' },
	portal = { 100, '[[ویکی‌پدیا:درگاه|درگاه]]' },
	['درگاه'] = { 100, '[[ویکی‌پدیا:درگاه|درگاه]]' },
	talk = { function(n) return n > 0 and n%2 == 1 end, '[[راهنما:صفحه بحث|بحث]]' },
	['بحث'] = { function(n) return n > 0 and n%2 == 1 end, '[[راهنما:صفحه بحث|بحث]]' },
	template = { 10, '[[ویکی‌پدیا:فضای نام الگو|الگو]]' },
	['الگو'] = { 10, '[[ویکی‌پدیا:فضای نام الگو|الگو]]' },
	wikipedia = { 4, '[[ویکی‌پدیا:فضای نام ویکی‌پدیا|پروژه ویکی‌پدیا]]' },
	['ویکی‌پدیا'] = { 4, '[[ویکی‌پدیا:فضای نام ویکی‌پدیا|پروژه ویکی‌پدیا]]' },
	category = { 14, '[[ویکی‌پدیا:رده‌بندی|رده]]' },
	['رده'] = { 14, '[[ویکی‌پدیا:رده‌بندی|رده]]' },
	user = { 2, '[[ویکی‌پدیا:صفحه‌های کاربری|کاربر]]' },
	['کاربر'] = { 2, '[[ویکی‌پدیا:صفحه‌های کاربری|کاربر]]' },
}

-- Don't convert blank category to nil
local function valueFunc(key, val)
	if type(val) == 'string' then
		val = mw.ustring.match(val, '^%s*(.-)%s*$')
		if val == '' and key ~= 'category' and key ~= 'رده' and key ~= 'embed' and key ~= 'تعبیه' then
			return nil
		end
	end
	return val
end

local function getPrettyName(args)
	for k in pairs(namespaceCategories) do
		if args[k .. ' category'] or args['رده ' .. k] then
			return  "'''[[:رده:" .. (args[k .. ' category'] or args['رده ' .. k]) .. "|" .. args.name .. "]]''': "
		end
	end
	return "'''" .. args.name .. "''': "
end

function p.core(frame, args)
	if not args then
		args = require('Module:Arguments').getArgs(frame, {wrappers = 'الگو:الگوی تغییرمسیر/هسته', valueFunc = valueFunc})
		if args['تعبیه'] then args.embed = args['تعبیه'] end
		if args['اطلاعات'] then args.info = args['اطلاعات'] end
		if args['نام'] then args.name = args['نام'] end
		if args['از'] then args.from = args['از'] end
		if args['به'] then args.to = args['به'] end
	end
	local namespace = mw.title.getCurrentTitle().namespace
	local otherCategory = (args['other category'] or args['رده دیگر']) and (args.category or args['رده'] or mw.ustring.format('[[رده:%s]]', args['other category'] or args['رده دیگر']))
	local embedPossible = args.embed == nil or args.embed == 'yes' or args.embed == 'بله'

	--- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed
	local beCompatibleWithBug12974 = args.info and (mw.ustring.find(args.info, '^[:;#*]', 1) == 1 or mw.ustring.find(args.info, '{|', 1, true) == 1) and '\n' or ' '
	
	local retval = mw.ustring.format('*%sاین یک تغییرمسیر است%s%s.%s%s\n',
		embedPossible and args.name and getPrettyName(args) or '',
		args.from and (' از ' .. args.from) or '',
		args.to and (' به ' .. args.to) or '',
		args.info and beCompatibleWithBug12974 or '',
		args.info or ''
	)
	for k, v in pairs(namespaceCategories) do
		if args[k .. ' category'] or args['رده ' .. k] then
			if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then
				retval = retval .. (args.category or mw.ustring.format('[[رده:%s]]', args[k .. ' category'] or args['رده ' .. k]))
			elseif args['other category'] or args['رده دیگر'] then
				retval = retval .. otherCategory
			else
				retval = retval .. frame:expandTemplate{title = 'الگوی تغییرمسیر نادرست', args = {v[2]}}
			end
		end
	end
	return retval
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {wrappers = 'الگو:الگوی تغییرمسیر', valueFunc = valueFunc})
	-- Local arguments
	if args['شناسه'] then args.id = args['شناسه'] end
	if args['نام'] then args.name = args['نام'] end
	if args['از'] then args.from = args['از'] end
	if args['به'] then args.to = args['به'] end
	
	local retval = p.core(frame, args)
	if mw.title.getCurrentTitle().namespace == 0 then
		if args.printworthy == 'yes' then
			return retval .. (args.category or '[[رده:تغییرمسیرهای قابل چاپ]]')
		elseif args.printworthy == 'no' then
			return retval .. (args.category or '[[رده:تغییرمسیرهای قابل چاپ]]')
		end
	end
	return retval
end

return p