Module:Television episode redirect handler
Appearance
This Lua module is used on approximately 7,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
This template adds an automatically generated short description. If the automatic short description is not optimal, replace it by adding {{Short description}} at the top of the article. |
This module depends on the following other modules: |
Module:Television episode redirect handler is used to tag a television episode redirect with the relevant redirect categories and adds a short description via {{Television episode short description}} and a DEFAULTSORT sort key when necessary.
Usage
{{#invoke:Television episode redirect handler|main}}
Episode specific parameter list
The parameter names use a corresponding parameter from Template:Infobox television episode to fill in the data. They are listed below.
Parameter | Corresponding infobox parameter | Description |
---|---|---|
series_name
|
series
|
The TV series name. |
episode_num
|
episode
|
The episode's number. |
season_num
|
season
|
The season's number. |
season_num_uk
|
series_no
|
The season's number if using the British "series" term. |
not_dab
|
same name | Set if the TV series name has parentheses as part of its name. |
special
|
same name | Setting to "yes" will set the description as a "special episode". Any other value will replace the word "special" with the one entered. For example |special=recap will set the text to "recap episode".
|
limited
|
same name | Set if the series is a single season series, such as miniseries or limited series and does not need a season number as part of the description. |
General parameter list
Parameter | Explanation | {{R with possibilities}} | {{R printworthy}} or {{R unprintworthy}} |
---|---|---|---|
series_name
|
The name of the series article, including disambiguation. Will set the value entered as series which this redirect belongs to. | - | - |
series_name#
|
For multiple series starting from the 2nd series in the style of |series_name2= . The name of the series article names, including disambiguation. Will set the values entered as series which this object belongs to.
|
- | - |
multi_series_name_table
|
Multiple series article names, including disambiguation. Will set the values entered as series which this object belongs to. This parameter can only be used from other modules as it requires the parameters to be passed as an args table. | - | - |
parent_series
|
Used for scenarios where a series has a short web-based companion series ("minisodes"), and the redirects should be placed in the parent series category. | - | - |
restricted
|
Will tag the redirect with: {{R restricted}} and set the value entered as the correct title. | Yes | printworthy |
birth_name
|
Only valid for character redirects; Any value will tag the redirect with: {{R from birth name}}. | No | printworthy |
alt_name
|
Any value will tag the redirect with: {{R from alternative name}}. | No | printworthy |
former_name
|
Any value will tag the redirect with: {{R from former name}}. | No | printworthy |
short_name
|
Any value will tag the redirect with: {{R from short name}}. | No | printworthy |
long_name
|
Any value will tag the redirect with: {{R from long name}}. | No | printworthy |
sort_name
|
Only valid for character redirects; Any value will tag the redirect with: {{R from sort name}}. The value must be two characters. See {{R from sort name}} for more information. | No | printworthy |
title_name
|
Only valid for character redirects; Any value will tag the redirect with: {{R from name with title}}. | No | unprintworthy |
alt_spelling
|
Will tag the redirect with: {{R from alternative spelling}} and set the value entered as the correct spelling to use. | No | unprintworthy |
to_diacritic
|
Any value will tag the redirect with: {{R to diacritic}}. | No | unprintworthy |
incorrect_name
|
Any value will tag the redirect with: {{R from incorrect name}} and set the |primary= value entered as the correct name to use. If |primary= isn't used, it will instead use the value entered here.
|
No | unprintworthy |
capitalisation
|
Any value will tag the redirect with: {{R from miscapitalisation}} and set the |primary= value entered as the correct capitalisation to use. If |primary= isn't used, it will instead use the value entered here.
|
No | unprintworthy |
unneeded_dab
|
Any value will tag the redirect with: {{R from unnecessary disambiguation}}. | No | unprintworthy |
draft_move
|
Any value will tag the redirect with: {{R from move}} and {{R from draft namespace}}. | No | unprintworthy |
without_mention
|
Any value will tag the redirect with: {{R to article without mention}}. | No | unprintworthy |
anchor
|
Set as default for episode redirects. Any value will tag the redirect with: {{R to anchor}}. | - | - |
section
|
Set as default for fictional character, element and location redirects. Any value will tag the redirect with: {{R to section}}. | - | - |
list
|
Any value will tag the redirect with: {{R to list entry}}. | - | - |
to_article
|
Used for redirects to articles, and not to a specific section of the article. | - | - |
primary
|
Will tag the redirect with: {{R avoided double redirect}} and set the value entered as the primary redirect. | - | - |
merge
|
Any value will tag the redirect with: {{R from merge}}. | - | - |
history
|
Any value will tag the redirect with: {{R with history}}. | - | - |
dab_exception
|
Any value will set the current disambiguation used as correct, regardless if it follows a standard style. See note below. | - | - |
correct_disambiguation
|
Value will be used for disambiguation validation. Should be used if the disambiguation is different than the series name, such as when using a franchise name. | - | - |
test
|
Any value will set instruct the function to return only testing validation data. Used in /testcases. | - | - |
test_title
|
Value will be used for title validation. Used in /testcases. | - | - |
Notes
- The redirect will automatically be tagged with {{R from television episode}}, {{R from fictional character}}, {{R from fictional element}}, {{R from fictional location}} or {{R from song}} depending on the type of redirect, and be placed in the relevant category.
- Using the series parameters will place the redirect in a series-specific category:
[[Category:(series) (object) redirects to lists]]
, such as Category:Arrow (TV series) character redirects to lists. - If the redirect does not use one of the following correct disambiguation —
(series)
,(series) episode
,(series) character
,(series) element
or(series) character
— the redirect will be tagged with {{R from incorrect disambiguation}} and {{R unprintworthy}}. - If the redirect is using one of the unprintworthy templates, it will be categorized as {{R unprintworthy}}. If not, it will be categorized as {{R printworthy}}.
- If the redirect is using one of the templates marked above as not {{R with possibilities}}, it won't be categorized with it.
- If the redirect is linked to a Wikidata item, it will automatically be tagged with {{R with Wikidata item}}.
- For episode redirects, a short description will be added only to the primary redirect. Additionally, If
|series_name2=
(or higher) is used, a short description won't be added.
require("strict")
local p = {}
local addManualCategory = false
local currentFrame
local categoryList = {
["SEASON_EPISODE_CATEGORY"] = "Category:%s (%s %s) episodes"
}
local TEMP_TRACKING_CATEGORY = "[[Category:Television episode redirect handler parameter usage tracking|%s]]"
--[[
Helper function which creates a season category, checks if it exists
and returns it if it does or an empty string if it doesn't.
--]]
local function getSeasonCategory(seriesName, seasonType, seasonNumber)
local seasonCategory = string.format(categoryList["SEASON_EPISODE_CATEGORY"], seriesName, seasonType, seasonNumber)
if (mw.title.new(seasonCategory).exists) then
return "[[" .. seasonCategory .. "]]"
else
return ""
end
end
--[[
Local function which sets adds the primary episode redirect to a season category, if it exists.
--]]
local function getSeasonCategory(args)
local seasonNumber
local seasonType
if (args.season_num) then
seasonNumber = args.season_num
seasonType = "season"
elseif (args.season_num_uk) then
seasonNumber = args.season_num_uk
seasonType = "series"
end
local seasonCategory = ""
if (args.series_name and seasonNumber) then
seasonCategory = getSeasonCategory(args.series_name, seasonType, seasonNumber)
if (seasonCategory == "") then
local seriesNameNoDab = mw.ustring.gsub(args.series_name, "%s+%b()$", "")
seasonCategory = getSeasonCategory(seriesNameNoDab, seasonType, seasonNumber)
end
end
return seasonCategory
end
--[[
Local function which "Module:Sort title" to retrieve a sortkey and set it as the default sortkey.
--]]
local function getDefaultSortKey()
local sortkeyModule = require("Module:Sort title")
local sortkey = sortkeyModule._getSortKey()
return currentFrame:preprocess{text = "{{DEFAULTSORT:" .. sortkey .. "}}"}
end
--[[
Local function which calls "Module:Television episode short description" to add a short description.
--]]
local function getShortDescription(args)
local shortDescription = require("Module:Television episode short description")._getShortDescription
return shortDescription(currentFrame, args)
end
--[[
Public function which is used to create a Redirect category shell
with relevant redirects, and a short description for a television episode.
A sort key is also added to the article.
Parameters: See module documentation for details.
--]]
function p.main(frame)
currentFrame = frame
local getArgs = require("Module:Arguments").getArgs
local args = getArgs(currentFrame)
local redirectTemplateHandler = require("Module:Redirect template handler")
local validArgs = {"season_num", "season_num_uk", "episode_num", "limited", "not_dab", "parent_series", "special"}
local redirectCategoryShell, mainRedirect, unknownParametersErrors = redirectTemplateHandler.setEpisodeRedirect(args, validArgs)
-- Used for testcases testing.
if (args.test) then
-- This is not the shell, but just the redirect template names that were used.
return redirectCategoryShell
end
-- Only add a short description to the main redirect,
-- and not to a crossover episode, as the short description isn't set up to handle it.
local shortDescription = ""
if (mainRedirect and not args.series_name2) then
shortDescription = getShortDescription(args)
end
local defaultSortKey = getDefaultSortKey()
local seasonCategory = getSeasonCategory(args)
if (unknownParametersErrors) then
return redirectCategoryShell .. "\n" .. shortDescription .. "\n" .. defaultSortKey .. "\n" .. seasonCategory .. unknownParametersErrors
else
return redirectCategoryShell .. "\n" .. shortDescription .. "\n" .. defaultSortKey .. "\n" .. seasonCategory
end
end
return p