پودمان:Redirect template: تفاوت میان نسخه‌ها

از ایران پدیا
پرش به ناوبری پرش به جستجو
بدون خلاصۀ ویرایش
 
جز (۱ نسخه واردشده)
 
(۱۲ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد)
(بدون تفاوت)

نسخهٔ کنونی تا ‏۲۷ دسامبر ۲۰۱۷، ساعت ۰۹:۵۷

توضیحات این پودمان می‌تواند در پودمان: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 },
	main = { 0, '[[ایران‌پدیا:مقاله چیست؟|اصلی]]' },
	help = { 12, '[[ایران‌پدیا:فضای نام راهنما|راهنما]]' },
	portal = { 100, '[[ایران‌پدیا:درگاه|درگاه]]' },
	talk = { function(n) return n > 0 and n%2 == 1 end, '[[راهنما:صفحه بحث|بحث]]' },
	template = { 10, '[[ایران‌پدیا:فضای نام الگو|الگو]]' },
	iranpedia = { 4, '[[ایران‌پدیا:فضای نام ایران‌پدیا|پروژه ایران‌پدیا]]' },
	category = { 14, '[[ایران‌پدیا:رده‌بندی|رده]]' },
	user = { 2, '[[ایران‌پدیا:صفحه‌های کاربری|کاربر]]' },
}

-- Don't convert blank category to nil
local function valueFunc(key, val)
	if type(val) == 'string' then
		val = val:match('^%s*(.-)%s*$')
		if val == '' and key ~= 'category' and key ~= 'embed' then
			return nil
		end
	end
	return val
end

local function getPrettyName(args)
	for k in pairs(namespaceCategories) do
		if args[k .. ' category'] then
			return  "'''[[:رده:" .. args[k .. ' category'] .. "|" .. 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})
	end
	local namespace = mw.title.getCurrentTitle().namespace
	local otherCategory = args['other category'] and (args.category or string.format('[[رده:%s]]', args['other category']))
	local embedPossible = args.embed == nil or args.embed == 'yes'

	--- 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 (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' '
	
	local retval = string.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'] then
			if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then
				retval = retval .. (args.category or string.format('[[رده:%s]]', args[k .. ' category']))
			elseif args['other category'] 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 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