<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ATelevision_crossover_note</id>
	<title>Module:Television crossover note - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ATelevision_crossover_note"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Television_crossover_note&amp;action=history"/>
	<updated>2026-05-24T19:26:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Television_crossover_note&amp;diff=147195&amp;oldid=prev</id>
		<title>imported&gt;Gonnym at 13:45, 11 December 2019</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Television_crossover_note&amp;diff=147195&amp;oldid=prev"/>
		<updated>2019-12-11T13:45:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local description = {&lt;br /&gt;
	[1] = {&lt;br /&gt;
		[1] = &amp;quot;This episode is a crossover with %s.&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	[2] = {&lt;br /&gt;
		[1] = &amp;quot;This episode begins a crossover event that concludes on %s.&amp;quot;,&lt;br /&gt;
		[2] = &amp;quot;This episode concludes a crossover event that begins on %s.&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	[3] = {&lt;br /&gt;
		[1] = &amp;quot;This episode begins a crossover event that continues on %s and concludes on %s.&amp;quot;,&lt;br /&gt;
		[2] = &amp;quot;This episode continues a crossover event that begins on %s and concludes on %s.&amp;quot;,&lt;br /&gt;
		[3] = &amp;quot;This episode concludes a crossover event that begins on %s and continues on %s.&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	[4] = {&lt;br /&gt;
		[1] = &amp;quot;This episode begins a crossover event that continues on %s and %s, and concludes on %s.&amp;quot;,&lt;br /&gt;
		[2] = &amp;quot;This episode continues a crossover event that begins on %s continues on %s, and concludes on %s.&amp;quot;,&lt;br /&gt;
		[3] = &amp;quot;This episode continues a crossover event that begins on %s and %s, and concludes on %s.&amp;quot;,&lt;br /&gt;
		[4] = &amp;quot;This episode concludes a crossover event that begins on %s and continues on %s and %s.&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	[5] = {&lt;br /&gt;
		[1] = &amp;quot;This episode begins a crossover event that continues on %s, %s, and %s, and concludes on %s.&amp;quot;,&lt;br /&gt;
		[2] = &amp;quot;This episode continues a crossover event that begins on %s, continues on %s and %s, and concludes on %s.&amp;quot;,&lt;br /&gt;
		[3] = &amp;quot;This episode continues a crossover event that begins on %s and %s, continues on %s, and concludes on %s.&amp;quot;,&lt;br /&gt;
		[4] = &amp;quot;This episode continues a crossover event that begins on %s, %s, and %s, and concludes on %s.&amp;quot;,&lt;br /&gt;
		[5] = &amp;quot;This episode concludes a crossover event that begins on %s, and continues on %s, %s, and %s.&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local errorMessages = {&lt;br /&gt;
	[&amp;quot;MISSING_VALUE&amp;quot;] = &amp;quot;missing |%s= value&amp;quot;,&lt;br /&gt;
	[&amp;quot;NOT_A_NUMBER&amp;quot;] = &amp;quot;value of |%s= should be a number&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local errors = {}&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Local function which is used to create an error message.&lt;br /&gt;
--]]&lt;br /&gt;
local function createErrorMsg(errorText) &lt;br /&gt;
	local errorMsg = &amp;#039;&amp;lt;span style=&amp;quot;font-size:100%;&amp;quot; class=&amp;quot;error&amp;quot;&amp;gt; &amp;lt;strong&amp;gt;Error: &amp;lt;/strong&amp;gt;&amp;#039; .. errorText .. &amp;#039;.&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
	table.insert(errors, errorMsg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Local function which gets the series list from either the numbered (positional) or named parameters,&lt;br /&gt;
and checks if the number of series parameters match the value of parts - creates an error message if they aren&amp;#039;t.&lt;br /&gt;
Returns the series list or nil.&lt;br /&gt;
--]]&lt;br /&gt;
local function getSeriesList(parts, args)&lt;br /&gt;
	local seriesList = {}&lt;br /&gt;
&lt;br /&gt;
	parts = parts - 1&lt;br /&gt;
	if (parts &amp;lt; 1) then&lt;br /&gt;
		parts = 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, parts do&lt;br /&gt;
		if (args[i] or args[&amp;quot;series&amp;quot; .. i]) then&lt;br /&gt;
			seriesList[i] = args[i] or args[&amp;quot;series&amp;quot; .. i]&lt;br /&gt;
		else&lt;br /&gt;
			createErrorMsg(string.format(errorMessages[&amp;quot;MISSING_VALUE&amp;quot;], i)) &lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return seriesList&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Local function which checks if the parameters used are correct.&lt;br /&gt;
Creates an error message if they aren&amp;#039;t.&lt;br /&gt;
--]]&lt;br /&gt;
local function isArgValidNumber(name, value)&lt;br /&gt;
	if (value) then&lt;br /&gt;
		if (tonumber(value)) then&lt;br /&gt;
			return tonumber(value)&lt;br /&gt;
		else&lt;br /&gt;
			createErrorMsg(string.format(errorMessages[&amp;quot;NOT_A_NUMBER&amp;quot;], name))&lt;br /&gt;
			return nil &lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		createErrorMsg(string.format(errorMessages[&amp;quot;MISSING_VALUE&amp;quot;], name)) &lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Local function which is used to handle the actual main proccess.&lt;br /&gt;
--]]&lt;br /&gt;
local function _main(args)&lt;br /&gt;
	local parts = isArgValidNumber(&amp;quot;parts&amp;quot;, args.parts)&lt;br /&gt;
	local currentPart = isArgValidNumber(&amp;quot;part&amp;quot;, args.part)&lt;br /&gt;
&lt;br /&gt;
	-- If missing parts or current part values, show an error.&lt;br /&gt;
	if (not parts or not (currentPart or parts == 1)) then&lt;br /&gt;
		-- Error message handling.&lt;br /&gt;
		return table.concat(errors)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local seriesList = getSeriesList(parts, args)&lt;br /&gt;
&lt;br /&gt;
	-- If missing series parts, show an error.&lt;br /&gt;
	if (not seriesList) then&lt;br /&gt;
		-- Error message handling.&lt;br /&gt;
		return table.concat(errors)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (parts == 1) then&lt;br /&gt;
		currentPart = 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local text = string.format(description[parts][currentPart], seriesList[1], seriesList[2], seriesList[3], seriesList[4], seriesList[5])&lt;br /&gt;
	if (args.no_hr) then&lt;br /&gt;
		return text&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;hr&amp;gt;&amp;quot; .. text&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Public function which is used to handle the logic for creating a note for television crossover episodes.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
	-- |part=					— required; The crossover part number of the current episode.&lt;br /&gt;
	-- |parts=					— required; The number of total crossover episodes.&lt;br /&gt;
	-- |no_hr=					— optional; Any value will disable the addition of the &amp;lt;hr&amp;gt; tag.&lt;br /&gt;
	-- |1...5=					— required; The TV series which are part of the crossover, by order of crossover appearance.&lt;br /&gt;
	-- |series1...series5=		— optional; Optional replacement for the positional series parameters.&lt;br /&gt;
--]]&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return _main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Gonnym</name></author>
	</entry>
</feed>