Module:Infobox television disambiguation check
Appearance
![]() | This Lua module is used on approximately 69,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 module depends on the following other modules: |
Module:Infobox television disambiguation check is used to validate the disambiguation of a page using {{Infobox television}}.
What it does
The module preforms two checks:
- It checks by a series of validations if one of the accepted WP:NCTV disambiguation styles appears in the parenthesis. If it is incorrect, it places the page in Category:Television articles with incorrect naming style. Validations currently supported:
- Validates the format used is one of the accepted values.
- Validates the country adjective used is correct.
- Validates the year is using 4 digits.
- Validates that the style is ordered as <year> <country adjective> <format>.
- It checks if a page is using "(film series)", "(franchise)", "(radio)", "(season #)", "(series #)" or "(TV programming block)" as disambiguation, but uses {{Infobox television}} instead of {{Infobox media franchise}}, {{Infobox radio show}}, {{Infobox television season}} or {{Infobox programming block}}}. If so, it places the page in Category:Television articles using incorrect infobox.
Usage
Parameter list
The following parameter can be used as a positional parameter.
Parameter | Explanation | Status |
---|---|---|
1
|
The page's title. | required |
See also
Tracking categories
-- This module requires the use of Module:Arguments.
local getArgs = require('Module:Arguments').getArgs
local p = {}
local validNameList = {
"TV series",
"TV program",
"TV programme",
"TV film",
"film",
"miniseries",
"serial",
"game show",
"talk show",
"web series"
}
local invalidNameList = {
"television film",
"tv miniseries",
"television miniseries",
"tv game show",
"television game show",
"tv talk show",
"television talk show"
}
local franchise = "franchise"
local season = "season"
local radio = "radio"
local exceptionList = {
"The (206)",
"Cinderella (Apakah Cinta Hanyalah Mimpi?)",
"How to Live with Your Parents (For the Rest of Your Life)",
"How to Sell Drugs Online (Fast)",
"I (Almost) Got Away With It",
"Kevin (Probably) Saves the World",
"Monty Python: Almost the Truth (Lawyers Cut)",
"Off Sides (Pigs vs. Freaks)",
"Randall and Hopkirk (Deceased)",
"Who the (Bleep)...",
"Who the (Bleep) Did I Marry?"
}
local categoryList = {
["incorrect"] = "[[Category:Television articles with incorrect naming style]]",
["franchise"] = "[[Category:Television articles using incorrect infobox|F]]",
["season"] = "[[Category:Television articles using incorrect infobox|S]]",
["radio"] = "[[Category:Television articles using incorrect infobox|R]]"
}
local isValid = false
local category = ""
local function _main(args)
local title = args[1]
-- Exit module if the parameter has no value.
if (title == nil or title == "") then
return ""
end
local match = require("Module:String")._match
-- Get the disambiguation text and make sure that if the title has more than 1 pair of brackets, it returns the last one.
local disambiguation = match(title, "%s%((.-)%)", 1, -1, false, "")
-- Exit module if the title has no disambiguation.
if (not disambiguation or disambiguation == "") then
return ""
end
-- Exit module if the title has brackets that are part of the title (not disambiguation).
for _, v in ipairs(exceptionList) do
if (v == title) then
return ""
end
end
-- Check if the disambiguation is valid.
for _, v in ipairs(validNameList) do
if (string.match(disambiguation, v)) then
-- Name valid, set isValid to true.
isValid = true
-- Check if the disambiguation is using one of the extended not supported styles.
if (v == "miniseries" or v == "game show" or v == "talk show" or v == "film") then
local disambiguationLowerCaps = mw.ustring.lower(disambiguation)
for _, j in ipairs(invalidNameList) do
if (string.match(disambiguationLowerCaps, j)) then
isValid = false
break
end
end
else
break
end
end
end
-- Check if the disambiguation is using "franchise".
if (string.match(disambiguation, franchise)) then
isValid = true
category = categoryList["franchise"]
end
-- Check if the disambiguation is using "season".
if (string.match(disambiguation, season)) then
isValid = true
category = categoryList["season"]
end
-- Check if the disambiguation is using "radio".
if (string.match(disambiguation, radio)) then
isValid = true
category = categoryList["radio"]
end
-- Check if the disambiguation is not valid and add category.
if (not isValid) then
category = categoryList["incorrect"]
end
return category
end
function p.main(frame)
local args = getArgs(frame)
return _main(args)
end
return p