Jump to content

Module:Infobox television season name

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Gonnym (talk | contribs) at 18:35, 3 January 2019. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

-- This module requires the use of Module:Arguments.
local getArgs = require('Module:Arguments').getArgs

local p = {}

-- Local function which is used to check if the given article exists.
local function checkArticle(articleName)
	local article = mw.title.new(articleName)
	if (article.exists) then
		return "true"
	else
		return ""
	end
end

-- Local function which is used to create a TV season link.
local function createLink(args, number)
	local showName = args[1] or args['show_name']
	if (showName == nil) then
		showName = ""
	else
		showName = showName .. " "
	end
	
	local preSeasonQualifier = args[2] or args['pre_season_qualifier']
	if (preSeasonQualifier == nil) then
		preSeasonQualifier = ""
	else
		preSeasonQualifier = preSeasonQualifier .. " "
	end
	
	local seasonQualifier = args[3] or args['season_qualifier']
	if (seasonQualifier == nil) then
		seasonQualifier = ""
	else 
		seasonQualifier = seasonQualifier .. " "
	end
	
	local seasonType = args[4] or args['season_type']
	if (seasonType == nil) then
		seasonType = "season"
	end
	
	seasonType = seasonType .. " "

	local seasonNumber = args[5] or args['season_number']
	if (seasonNumber == nil) then
		seasonNumber = 0
	end

	seasonNumber = seasonNumber + number
	
	return showName .. preSeasonQualifier .. "(" .. seasonQualifier .. seasonType .. seasonNumber .. ")"
end

-- Local function which is called to create a TV season link for the next season.
-- Passes the value "1" to increment the current season number.
local function createNextSeasonArticle(args)
	return createLink(args, 1)
end

-- Local function which is called to create a TV season link for the previous season.
-- Passes the value "-1" to decrement the current season number.
local function createPreviousSeasonArticle(args)
	return createLink(args, -1)
end

--[[
Wrapper function which handles the processing of the arguments 
from multiple public invoked functions.

Parameters:
	-- |show_name=				— required; The title of TV program.
	-- |pre_season_qualifier=	— optional; For cases where disambiguation before the season is required
											(e.g. the pre-season qualifier for Dallas (1978 TV series) (season 7) is (1978 TV series)).
	-- |season_qualifier=		— optional; For cases where disambiguation (typically of the show's origin country) before the season type is required
											(e.g. the season qualifier for The Apprentice (U.S. season 2) is U.S.).
	-- |season_type=			— optional; To determine the usage of the word "season" for American-based shows, or "series" for shows using British-English.
	-- |season_number=			— optional; Season number. The N season of this particular show. 
--]]
local function makeInvokeFunc(funcName)
	return function (frame)
		local args = getArgs(frame)
		return p[funcName](args)
	end
end

p.checkNextSeason = makeInvokeFunc('_checkNextSeason')

--[[
Public function which is used to check if the next season has
a created article or redirect.

Parameters: See makeInvokeFunc() for documentation.
--]]
function p._checkNextSeason(args)
	local articleName = createNextSeasonArticle(args)
	return checkArticle(articleName)
end

p.checkPrevSeason = makeInvokeFunc('_checkPrevSeason')

--[[
Public function which is used to check if the previous season has
a created article or redirect.

Parameters: See makeInvokeFunc() for documentation.
--]]
function p._checkPrevSeason(args)
	local articleName = createPreviousSeasonArticle(args)
	return checkArticle(articleName)
end

p.checkAll = makeInvokeFunc('_checkAll')

--[[
Public function which is used to check if the next or previous season have
a created article or redirect.

Parameters: See makeInvokeFunc() for documentation.
--]]
function p._checkAll(args)
	if (p._checkPrevSeason(args) == "true") then
		return "true"
	else
		return p._checkNextSeason(args)
	end
end

p.getNextSeasonArticle = makeInvokeFunc('_getNextSeasonArticle')

--[[
Public function which is used to get the next season article title.

Parameters: See makeInvokeFunc() for documentation.
--]]
function p._getNextSeasonArticle(args)
	return createNextSeasonArticle(args)
end

p.getPrevSeasonArticle = makeInvokeFunc('_getPrevSeasonArticle')

--[[
Public function which is used to get the previous season article title.

Parameters: See makeInvokeFunc() for documentation.
--]]
function p._getPrevSeasonArticle(args)
	return createPreviousSeasonArticle(args)
end

return p