Module:Infobox television season disambiguation check: Difference between revisions
NeonWabbit (talk | contribs) Created page with "-- This module requires the use of the following modules. local getArgs = require('Module:Arguments').getArgs local validateDisambiguation = require('Module:Television infoboxes disambiguation check') local p = {} local validDisambiguationTypeList = { "TV series, season", "TV series, series", "season", "series" } local validDisambiguationPatternList = { validateDisambiguation.DisambiguationPattern{pattern = "^(%d+) ([%D]+) TV series, season (%d+)$", type = 8}, --..." |
NeonWabbit (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
require("strict") | |||
local getArgs = require( | |||
local validateDisambiguation = require( | local getArgs = require("Module:Arguments").getArgs | ||
local validateDisambiguation = require("Module:Television infoboxes disambiguation check") | |||
local p = {} | local p = {} | ||
----------------------------------------------------------------------- | |||
-- Valid disambiguation types for SEASON pages | |||
-- Only "TV series" is allowed as the base type. | |||
----------------------------------------------------------------------- | |||
local validDisambiguationTypeList = { | local validDisambiguationTypeList = { | ||
"TV | "TV series", | ||
"season", | "season", | ||
"series" | "series" | ||
} | } | ||
----------------------------------------------------------------------- | |||
-- Valid disambiguation patterns for SEASON pages | |||
-- These patterns match the NEW naming conventions: | |||
-- | |||
-- "Lost season 1" | |||
-- "Big Brother (American TV series) season 5" | |||
-- "Gladiators (2008 British TV series) series 2" | |||
-- | |||
-- After getDisambiguation(), the disambiguation string becomes: | |||
-- | |||
-- "season 1" | |||
-- "American TV series season 5" | |||
-- "2008 British TV series series 2" | |||
-- | |||
----------------------------------------------------------------------- | |||
local validDisambiguationPatternList = { | local validDisambiguationPatternList = { | ||
validateDisambiguation.DisambiguationPattern{pattern = "^ | |||
validateDisambiguation.DisambiguationPattern{pattern = "^(%d+) ([%D]+) TV series | -- SEASON | ||
-- "TV series season 2" | |||
validateDisambiguation.DisambiguationPattern{pattern = "^(%d+) TV series | validateDisambiguation.DisambiguationPattern{ | ||
pattern = "^TV series%s+season%s+(%d+)$", | |||
validateDisambiguation.DisambiguationPattern{pattern = "^([%D]+) TV series | type = validateDisambiguation.VALIDATION_TYPE_SEASON_NUMBER | ||
}, | |||
validateDisambiguation.DisambiguationPattern{pattern = "^ | |||
-- YEAR + COUNTRY + SEASON | |||
validateDisambiguation.DisambiguationPattern{pattern = "^ | -- "2008 British TV series season 2" | ||
validateDisambiguation.DisambiguationPattern{ | |||
pattern = "^(%d+)%s+([%D]+)%s+TV series%s+%a+%s+(%d+)$", | |||
type = validateDisambiguation.VALIDATION_TYPE_YEAR_COUNTRY_SEASON_NUMBER | |||
}, | |||
-- YEAR + SEASON | |||
-- "2008 TV series season 2" | |||
validateDisambiguation.DisambiguationPattern{ | |||
pattern = "^(%d+)%s+TV series%s+%a+%s+(%d+)$", | |||
type = validateDisambiguation.VALIDATION_TYPE_YEAR_SEASON_NUMBER | |||
}, | |||
-- COUNTRY + SEASON | |||
-- "British TV series season 2" | |||
validateDisambiguation.DisambiguationPattern{ | |||
pattern = "^([%D]+)%s+TV series%s+%a+%s+(%d+)$", | |||
type = validateDisambiguation.VALIDATION_TYPE_COUNTRY_SEASON_NUMBER | |||
}, | |||
-- SEASON ONLY | |||
-- "season 2" | |||
validateDisambiguation.DisambiguationPattern{ | |||
pattern = "^season%s+(%d+)$", | |||
type = validateDisambiguation.VALIDATION_TYPE_SEASON_NUMBER | |||
}, | |||
-- SERIES ONLY (UK usage) | |||
-- "series 2" | |||
validateDisambiguation.DisambiguationPattern{ | |||
pattern = "^series%s+(%d+)$", | |||
type = validateDisambiguation.VALIDATION_TYPE_SEASON_NUMBER | |||
} | |||
} | } | ||
----------------------------------------------------------------------- | |||
-- Titles where parentheses are NOT disambiguation | |||
----------------------------------------------------------------------- | |||
local exceptionList = { | local exceptionList = { | ||
"^Bigg Boss %(Bangla season %d+%)$", | "^Bigg Boss %(Bangla season %d+%)$", | ||
| Line 34: | Line 87: | ||
} | } | ||
----------------------------------------------------------------------- | |||
-- Infoboxes that should NOT use this module | |||
----------------------------------------------------------------------- | |||
local otherInfoboxList = { | local otherInfoboxList = { | ||
["^[^,]*TV series$"] = "[[Category:Television articles using incorrect infobox|T]]" | ["^[^,]*TV series$"] = "[[Category:Television articles using incorrect infobox|T]]" | ||
} | } | ||
----------------------------------------------------------------------- | |||
-- Invalid title styles for season pages | |||
----------------------------------------------------------------------- | |||
local invalidTitleStyleList = { | local invalidTitleStyleList = { | ||
"List of" | "List of", | ||
"%(.-season%s+%d+%)", | |||
"%(.-series%s+%d+%)" | |||
} | } | ||
----------------------------------------------------------------------- | |||
-- Merge infobox television disambiguation types | |||
-- This ensures season pages don't use the wrong infobox. | |||
----------------------------------------------------------------------- | |||
local function getOtherInfoboxListMerged() | local function getOtherInfoboxListMerged() | ||
local infoboxTelevisionDisambiguation = require( | local infoboxTelevisionDisambiguation = require("Module:Infobox television disambiguation check") | ||
local list = infoboxTelevisionDisambiguation.getDisambiguationTypeList() | local list = infoboxTelevisionDisambiguation.getDisambiguationTypeList() | ||
| Line 49: | Line 114: | ||
otherInfoboxList[list[i]] = "[[Category:Television articles using incorrect infobox|T]]" | otherInfoboxList[list[i]] = "[[Category:Television articles using incorrect infobox|T]]" | ||
end | end | ||
return otherInfoboxList | return otherInfoboxList | ||
end | end | ||
----------------------------------------------------------------------- | |||
-- Internal main | |||
----------------------------------------------------------------------- | |||
local function _main(args) | local function _main(args) | ||
local title = args[1] | local title = args[1] | ||
local | |||
return validateDisambiguation.main(title, "infobox television season", validDisambiguationTypeList, validDisambiguationPatternList, exceptionList, | local merged = getOtherInfoboxListMerged() | ||
return validateDisambiguation.main( | |||
title, | |||
"infobox television season", | |||
validDisambiguationTypeList, | |||
validDisambiguationPatternList, | |||
exceptionList, | |||
merged, | |||
invalidTitleStyleList | |||
) | |||
end | end | ||
----------------------------------------------------------------------- | |||
-- Public entry point | |||
----------------------------------------------------------------------- | |||
function p.main(frame) | function p.main(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local category | local category = _main(args) | ||
return category | return category | ||
end | end | ||
----------------------------------------------------------------------- | |||
-- Test entry point (returns debug string) | |||
----------------------------------------------------------------------- | |||
function p.test(frame) | function p.test(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local | local _, debugString = _main(args) | ||
return debugString | return debugString | ||
end | end | ||
return p | return p | ||