Module:Episode short description: Difference between revisions
Appearance
Orangestar (talk | contribs) Created page with "--- @module local television = {} --- someone who is good at lua and mediawiki please parse this and remove the --- part that adds maintenance categories if the series doesnt have a season number --- RLM doesnt do seasons -- Unique suffix list. local uniqueSuffix = { [1] = "st", [2] = "nd", [3] = "rd", } -- Common suffix. local commonSuffix = "th" -- Test validation. local test = false local descriptions = { no_series = { type = 1, text = "Television episode..." |
Orangestar (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
--- @module | --- @module | ||
local television = {} | local television = {} | ||
-- Unique suffix list. | -- Unique suffix list. | ||
Line 22: | Line 18: | ||
no_series = { | no_series = { | ||
type = 1, | type = 1, | ||
text = " | text = "Red Letter Media episode", | ||
category = " | category = "", | ||
}, | }, | ||
only_series_name = { | only_series_name = { | ||
type = 2, | type = 2, | ||
text = "Episode of %s", | text = "Episode of %s", | ||
category = " | category = "", | ||
}, | }, | ||
season_and_series_name = { | season_and_series_name = { | ||
type = 3, | type = 3, | ||
text = "Episode | text = "Episode of %s", | ||
category = " | category = "", | ||
}, | }, | ||
single_episode = { | single_episode = { | ||
type = 4, | type = 4, | ||
text = "%s episode | text = "%s episode of %s", | ||
category = " | category = "", | ||
}, | }, | ||
multi_episodes = { | multi_episodes = { | ||
type = 5, | type = 5, | ||
text = "%s episodes | text = "%s episodes of %s", | ||
category = " | category = "", | ||
}, | }, | ||
limited_series = { | limited_series = { | ||
Line 62: | Line 58: | ||
-- Tracking category list. | -- Tracking category list. | ||
local trackingCategories = { | local trackingCategories = { | ||
disambiguated = "[[Category: | disambiguated = "[[Category:Episode articles with short description and disambiguated page names|%s]]" | ||
} | } | ||
Line 136: | Line 132: | ||
end | end | ||
--- Returns a short description in the style of: "Episode of Lost | --- Returns a short description in the style of: "Episode of Lost". | ||
--- @param tvSeriesName string The TV series name. | --- @param tvSeriesName string The TV series name. | ||
local function getShortDescriptionOnlySeriesName(tvSeriesName) | local function getShortDescriptionOnlySeriesName(tvSeriesName) | ||
Line 146: | Line 141: | ||
end | end | ||
--- Returns a short description in the style of: "5th episode of Lost". | |||
--- Returns a short description in the style of: "5th episode | |||
--- @param tvSeriesName string The TV series name. | --- @param tvSeriesName string The TV series name. | ||
--- @param episodeOrdinalNumber string The episode's ordinal number. | --- @param episodeOrdinalNumber string The episode's ordinal number. | ||
local function getShortDescriptionSingleEpisode(tvSeriesName, episodeOrdinalNumber) | |||
local function getShortDescriptionSingleEpisode(tvSeriesName | |||
local text = descriptions.single_episode.text | local text = descriptions.single_episode.text | ||
local shortDescription = string.format(text, episodeOrdinalNumber | local shortDescription = string.format(text, episodeOrdinalNumber, tvSeriesName) | ||
local category = getTrackingCategory(tvSeriesName, "single_episode") | local category = getTrackingCategory(tvSeriesName, "single_episode") | ||
return shortDescription, category | return shortDescription, category | ||
Line 189: | Line 152: | ||
--- Returns a short description for a multi-part episode in the style of: | --- Returns a short description for a multi-part episode in the style of: | ||
--- "23rd and 24th episodes | --- "23rd and 24th episodes of Lost". | ||
--- @param tvSeriesName string The TV series name. | --- @param tvSeriesName string The TV series name. | ||
--- @param episodeOrdinalNumbers table A list of episode ordinal numbers. | --- @param episodeOrdinalNumbers table A list of episode ordinal numbers. | ||
local function getShortDescriptionMultiEpisode(tvSeriesName, episodeOrdinalNumbers) | |||
local function getShortDescriptionMultiEpisode(tvSeriesName | |||
local episodeText = mw.text.listToText(episodeOrdinalNumbers) | local episodeText = mw.text.listToText(episodeOrdinalNumbers) | ||
local text = descriptions.multi_episodes.text | local text = descriptions.multi_episodes.text | ||
local shortDescription = string.format(text, episodeText | local shortDescription = string.format(text, episodeText, tvSeriesName) | ||
local category = getTrackingCategory(tvSeriesName, "multi_episodes") | local category = getTrackingCategory(tvSeriesName, "multi_episodes") | ||
return shortDescription, category | return shortDescription, category | ||
Line 210: | Line 165: | ||
--- Returns a short description for a special episode in the style of: | --- Returns a short description for a special episode in the style of: | ||
--- "Special episode of Lost" or "<value> episode of Lost | --- "Special episode of Lost" or "<value> episode of Lost". | ||
--- @param tvSeriesName string The TV series name. | --- @param tvSeriesName string The TV series name. | ||
--- @param special string The type of special episode. A "yes" value defaults to "Special". | --- @param special string The type of special episode. A "yes" value defaults to "Special". | ||
Line 226: | Line 180: | ||
--- Returns a short description based on the description type passed. | --- Returns a short description based on the description type passed. | ||
--- @param descriptionType number A description type number. | --- @param descriptionType number A description type number. | ||
--- @param tvSeriesName string The | --- @param tvSeriesName string The series name. | ||
--- @param episodeOrdinalNumbers table A list of episode ordinal numbers. | --- @param episodeOrdinalNumbers table A list of episode ordinal numbers. | ||
--- @param specialEpisode string The type of special episode. | --- @param specialEpisode string The type of special episode. | ||
local function getShortDescriptionByType( | local function getShortDescriptionByType( | ||
descriptionType, tvSeriesName | descriptionType, tvSeriesName, episodeOrdinalNumbers, specialEpisode) | ||
if descriptionType == descriptions.no_series.type then | if descriptionType == descriptions.no_series.type then | ||
return getShortDescriptionNoSeries() | return getShortDescriptionNoSeries() | ||
elseif descriptionType == descriptions.only_series_name.type then | elseif descriptionType == descriptions.only_series_name.type then | ||
return getShortDescriptionOnlySeriesName(tvSeriesName) | return getShortDescriptionOnlySeriesName(tvSeriesName) | ||
elseif descriptionType == descriptions.season_and_series_name.type then | --- elseif descriptionType == descriptions.season_and_series_name.type then | ||
--- return getShortDescriptionSeasonAndSeriesName(tvSeriesName, seasonOrdinalNumber, seasonTextStyle) | |||
elseif descriptionType == descriptions.single_episode.type then | elseif descriptionType == descriptions.single_episode.type then | ||
return getShortDescriptionSingleEpisode( | return getShortDescriptionSingleEpisode( | ||
tvSeriesName | tvSeriesName, episodeOrdinalNumbers[1]) | ||
elseif descriptionType == descriptions.multi_episodes.type then | elseif descriptionType == descriptions.multi_episodes.type then | ||
return getShortDescriptionMultiEpisode( | return getShortDescriptionMultiEpisode( | ||
tvSeriesName | tvSeriesName, episodeOrdinalNumbers) | ||
elseif descriptionType == descriptions.special_episode.type then | elseif descriptionType == descriptions.special_episode.type then | ||
return getShortDescriptionSpecialEpisode(tvSeriesName, specialEpisode) | return getShortDescriptionSpecialEpisode(tvSeriesName, specialEpisode) | ||
Line 255: | Line 206: | ||
--- Returns the type of the description to use. | --- Returns the type of the description to use. | ||
--- @param tvSeriesName string The TV series name. | --- @param tvSeriesName string The TV series name. | ||
--- @param episodeOrdinalNumbers table A list of episode ordinal numbers. | --- @param episodeOrdinalNumbers table A list of episode ordinal numbers. | ||
--- @param specialEpisode string The type of special episode. | --- @param specialEpisode string The type of special episode. | ||
local function getDescriptionType(tvSeriesName, episodeOrdinalNumbers, specialEpisode) | |||
local function getDescriptionType(tvSeriesName | |||
if (not tvSeriesName) then | if (not tvSeriesName) then | ||
return descriptions.no_series.type | return descriptions.no_series.type | ||
Line 268: | Line 217: | ||
end | end | ||
if ( | if (#episodeOrdinalNumbers < 1) then | ||
return descriptions.only_series_name.type | return descriptions.only_series_name.type | ||
end | end | ||
Line 283: | Line 228: | ||
return descriptions.multi_episodes.type | return descriptions.multi_episodes.type | ||
end | end | ||
return descriptions.only_series_name.type | |||
end | end | ||
Line 383: | Line 315: | ||
return episodeOrdinals | return episodeOrdinals | ||
end | end | ||
Line 456: | Line 337: | ||
--- @param args table The values that should be processed. | --- @param args table The values that should be processed. | ||
local function cleanValues(args) | local function cleanValues(args) | ||
for i, v in ipairs({"episode_num | for i, v in ipairs({"episode_num", "series_name"}) do | ||
if (args[v]) then | if (args[v]) then | ||
args[v] = args[v]:gsub("\127[^\127]*UNIQ%-%-(%a+)%-%x+%-QINU[^\127]*\127", "") -- Remove all strip-markers. | args[v] = args[v]:gsub("\127[^\127]*UNIQ%-%-(%a+)%-%x+%-QINU[^\127]*\127", "") -- Remove all strip-markers. | ||
Line 485: | Line 366: | ||
args = cleanValues(args) | args = cleanValues(args) | ||
local tvSeriesName, tvSeriesNameDab = getTVSeriesName(args.series_name, args.not_dab) | local tvSeriesName, tvSeriesNameDab = getTVSeriesName(args.series_name, args.not_dab) | ||
--- RLMWiki doesn't need seasons | |||
local seasonOrdinalNumber = getSeasonOrdinalNumber(seasonNumber) | --- local seasonNumber, seasonTextStyle = getSeasonNumberAndTextStyle(args.season_num, args.season_num_uk) | ||
--- local seasonOrdinalNumber = getSeasonOrdinalNumber(seasonNumber) | |||
local episodeOrdinalNumbers = getEpisodeOrdinalNumbers(args.episode_num) | local episodeOrdinalNumbers = getEpisodeOrdinalNumbers(args.episode_num) | ||
local limitedSeries = isLimitedSeries(args.limited, tvSeriesNameDab) | --- local limitedSeries = isLimitedSeries(args.limited, tvSeriesNameDab) | ||
local descriptionType = getDescriptionType( | local descriptionType = getDescriptionType( | ||
tvSeriesName, | tvSeriesName, | ||
episodeOrdinalNumbers, | episodeOrdinalNumbers, | ||
args.special | args.special | ||
) | ) | ||
Line 501: | Line 381: | ||
descriptionType, | descriptionType, | ||
tvSeriesName, | tvSeriesName, | ||
episodeOrdinalNumbers, | episodeOrdinalNumbers, | ||
args.special | args.special | ||
) | ) | ||
Line 526: | Line 403: | ||
--- Parameters: | --- Parameters: | ||
--- |episode_num= — optional; The episode's number. | --- |episode_num= — optional; The episode's number. | ||
--- |series_name= — optional; The TV series name. | --- |series_name= — optional; The TV series name. | ||
--- |not_dab= — optional; Set if the TV series name has parentheses as part of its name. | --- |not_dab= — optional; Set if the TV series name has parentheses as part of its name. | ||
Line 533: | Line 408: | ||
--- Any other value will replace the word "special" with the one entered. | --- Any other value will replace the word "special" with the one entered. | ||
--- For example "special=recap" will create "recap episode". | --- For example "special=recap" will create "recap episode". | ||
--- @param frame table The frame invoking the module. | --- @param frame table The frame invoking the module. | ||
function television.getShortDescription(frame) | function television.getShortDescription(frame) |