پودمان:Aired episodes

از ویکی‌پدیا، دانشنامهٔ آزاد
توضیحات پودمان[ایجاد] [پاکسازی]
local spellnum = require('Module:Spellnum per MOS').spellnum
local numConv = require('Module:Numeral converter').convert

function oneEpisode(value, one_return, more_return)
	return (tonumber(value) == 1 and one_return or more_return)
end

function parseNumber(value)
	return tonumber(mw.ustring.gsub(numConv(value, 'en'), '^([%d]*).*', '%1'), 10)
end

local p = {}

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = {
			'الگو:Aired episodes',
			'الگو:قسمت‌های پخش‌شده',
			'الگو:قسمت‌های پخش‌شده/تمرین'
			}
	})

	args = args or {}
	
	if args['انتشار'] then args.released = args['انتشار'] end
	if args['بریتانیا'] then args.uk = args['بریتانیا'] end
	if args['پایان'] then args.finished = args['پایان'] end
	if args['تاریخ'] then args.date = args['تاریخ'] end
	if args['تعداد'] then args.num = args['تعداد'] end
	if args['عنوان'] then args.title = args['عنوان'] end
	if args['فصل‌ها'] then args.seasons = args['فصل‌ها'] end
	if args['ویژه'] then args.specials = args['ویژه'] end
	if args['مقاله برنامه'] then args.showpage = args['مقاله برنامه'] end
	
	local airedEpisodes = ''
	local numberEpisodes = args.num or frame:expandTemplate{title='Template parameter value',args={args.showpage or args.title, 'جعبه اطلاعات تلویزیون', 1, 'num_episodes', 1}}
	numberEpisodes = parseNumber(numberEpisodes)
	local showName = mw.ustring.gsub((args.showpage and frame:expandTemplate{title='PAGENAMEBASE',args={args.showpage}} or args.title), "''", '')
	local isAllFinished = (args.finished == 'all' or args.finished == 'همه')
	
	if isAllFinished then
		airedEpisodes = airedEpisodes .. 'در طول مدت پخش ' .. (args.uk and 'برنامه' or 'مجموعه') .. '،'
	else
		if args.date then
			airedEpisodes = airedEpisodes .. 'تا ' .. args.date .. '،'
		else
			airedEpisodes = airedEpisodes .. frame:expandTemplate{title='تا تاریخ',args={args[1], args[2], args[3], post='،', df=((args.uk or args.df) and '' or 'US')}}
		end
	end
	 
	airedEpisodes = airedEpisodes .. ' ' .. spellnum{numberEpisodes, zero = 'no', forcenum = 'yes'} .. ' قسمت' .. " از ''" .. showName .. "''"
	
	airedEpisodes = airedEpisodes .. ' ' .. (args.released and ' منتشر' or ' پخش') .. (isAllFinished and 'شد' or 'شده‌است')
	
	if args.specials then
		airedEpisodes = airedEpisodes .. '؛ این قسمت‌ها شامل ' .. spellnum{args.specials} .. ' قسمت ویژه' .. (isAllFinished and 'بود' or 'می‌شود')
	end
	
	if args.finished then
		if isAllFinished then
			if args.seasons then
				airedEpisodes = airedEpisodes .. ' در طول ' .. spellnum{args.seasons} .. ' ' .. (args.part and 'بخش' or 'فصل') .. (args.uk and ' از مجموعه ' or '')
			end
			
			if args[1] then
				if args[4] then
					airedEpisodes = airedEpisodes .. '، بین ' .. frame:expandTemplate{title='Date',args={args[1]..'-'..(args[2] or '')..'-'..(args[3] or ''), ((args.uk or args.df) and 'DMY' or 'MDY')}} .. ((args.uk or args.df) and '' or '،')	.. ' و ' .. frame:expandTemplate{title='Date',args={(args[4] or '')..'-'..(args[5] or '')..'-'..(args[6] or ''), ((args.uk or args.df) and 'DMY' or 'MDY')}}
				else
					airedEpisodes = airedEpisodes .. '، به‌جز ' .. frame:expandTemplate{title='Date',args={args[1]..'-'..(args[2] or '')..'-'..(args[3] or ''), ((args.uk or args.df) and 'DMY' or 'MDY')}}
				end
			end
		else
			airedEpisodes = airedEpisodes .. '، به‌جز ' .. ((tonumber(args.finished) == math.floor(tonumber(args.finished))) and '' or 'نیمهٔ اول ') .. frame:expandTemplate{title='Ordinal to word',args={math.floor(tonumber(args.finished))}} .. ' ' .. (args.part and 'بخش' or args.uk and 'مجموعه' or 'فصل')
		end
	elseif args.airing then
		airedEpisodes = airedEpisodes .. '، در حال حاضر ' .. (args.part and 'بخش' or args.uk and 'مجموعهٔ' or 'فصل') .. frame:expandTemplate{title='Ordinal to word',args={math.floor(tonumber(args.airing))}} .. ' آن در حال پخش است'
	end
	
	airedEpisodes = airedEpisodes .. '.'
	
	local title = mw.title.getCurrentTitle()
	if title.namespace == 0 then
		if args.showpage == args.title then
			airedEpisodes = airedEpisodes .. '[[رده:الگوی قسمت‌های پخش‌شده به‌همراه پارامترهای مقاله برنامه و عنوان یکسان]]'
		end
		
		if args.showpage and args.title then
			airedEpisodes = airedEpisodes .. '[[رده:الگوی قسمت‌های پخش‌شده به‌همراه هر دو پارامتر مقاله برنامه و عنوان]]'
		end
	end
	
	return airedEpisodes
end

return p