Module:Infobox television disambiguation check/sandbox
Appearance
![]() | This is the module sandbox page for Module:Infobox television disambiguation check (diff). See also the companion subpage for test cases (run). |
![]() | 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)",
"I (Almost) Got Away With It",
"Monty Python: Almost the Truth (Lawyers Cut)",
"Randall and Hopkirk (Deceased)",
"Randall & Hopkirk (Deceased) (2000 TV series)"
}
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
-- Get the disambiguation text.
local disambiguation = string.match(title, "%s%((.-)%)")
-- Exit module if the title has no disambiguation.
if (not 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