Module:Aired episodes

local spellnum = require('Module:Spellnum per MOS').spellnum

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

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

function ordinalNumber(frame, value)
	return frame:expandTemplate{title='Ordinal to word',args={tonumber(value)}}
end

local p = {}

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = 'Template:Aired episodes'
	})
	args = args or {}
	
	local airedEpisodes = ''
	local numberEpisodes = args.num or frame:expandTemplate{title='Template parameter value',args={args.showpage or args.title, 'Infobox television', 1, 'num_episodes', 1}}
	numberEpisodes = parseNumber(numberEpisodes:gsub(",", ''))
	local showName = (args.showpage and frame:expandTemplate{title='PAGENAMEBASE',args={args.showpage}} or args.title):gsub("''", '')
	local isAllFinished = (args.finished == 'all')
	
	if isAllFinished then
		airedEpisodes = airedEpisodes .. 'During the course of the ' .. (args.uk and 'programme' or 'series') .. ','
	else
		if args.date then
			airedEpisodes = airedEpisodes .. 'As of' .. args.date .. ','
		else
			airedEpisodes = airedEpisodes .. frame:expandTemplate{title='As of',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'} .. ' episode' .. oneEpisode(numberEpisodes, '', 's') .. " of ''" .. showName .. "''"
	
	if not isAllFinished then
		airedEpisodes = airedEpisodes .. ' ' .. oneEpisode(numberEpisodes, 'has', 'have')
	end
	
	airedEpisodes = airedEpisodes .. ' ' .. (args.released and ((isAllFinished and 'were' or 'been') .. ' released') or 'aired')
	
	if args.specials then
		airedEpisodes = airedEpisodes .. ', including ' .. spellnum{args.specials} .. ' special' .. oneEpisode(args.specials, '', 's')
	end
	
	if args.finished then
		if isAllFinished then
			if args.seasons then
				airedEpisodes = airedEpisodes .. ' over ' .. spellnum{args.seasons} .. ' ' .. (args.uk and 'series' or ((args.part and 'part' or 'season') .. oneEpisode(args.seasons, '', 's')))
			end
			
			if args[1] then
				if args[4] then
					airedEpisodes = airedEpisodes .. ', between ' .. 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 ',')	.. ' and ' .. 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 .. ', concluding on ' .. 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
			local concludedPart = (args.finished_half and 'first half of the ' or (args.finished_part and ordinalNumber(frame, args.finished_part) .. ' part of the ' or ''))
			airedEpisodes = airedEpisodes .. ', concluding the ' .. concludedPart .. ordinalNumber(frame, args.finished) .. ' ' .. (args.part and 'part' or args.uk and 'series' or 'season')
		end
	elseif args.airing then
		airedEpisodes = airedEpisodes .. ', currently in its ' .. ordinalNumber(frame, args.airing) .. ' ' .. (args.part and 'part' or args.uk and 'series' or 'season')
	end
	
	airedEpisodes = airedEpisodes .. '.'
	
	local title = mw.title.getCurrentTitle()
	if title.namespace == 0 then
		if args.showpage == args.title then
			airedEpisodes = airedEpisodes .. '[[Category:Aired episodes using equal showpage and title parameters]]'
		end
		
		if args.showpage and args.title then
			airedEpisodes = airedEpisodes .. '[[Category:Aired episodes using both showpage and title parameters]]'
		end
	end
	
	return airedEpisodes
end

return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.