Module:Infobox television season disambiguation check: Difference between revisions

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}, --..."
 
No edit summary
 
Line 1: Line 1:
-- This module requires the use of the following modules.
require("strict")
local getArgs = require('Module:Arguments').getArgs
 
local validateDisambiguation = require('Module:Television infoboxes disambiguation check')
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 series, season",
"TV series",
"TV series, 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 = "^(%d+) ([%D]+) TV series, season (%d+)$", type = 8}, -- "VALIDATION_TYPE_YEAR_COUNTRY_SEASON_NUMBER"
 
validateDisambiguation.DisambiguationPattern{pattern = "^(%d+) ([%D]+) TV series, series (%d+)$", type = 8}, -- "VALIDATION_TYPE_YEAR_COUNTRY_SEASON_NUMBER"
-- SEASON
validateDisambiguation.DisambiguationPattern{pattern = "^(%d+) TV series, season (%d+)$", type = 4}, -- "VALIDATION_TYPE_YEAR_SEASON_NUMBER"
-- "TV series season 2"
validateDisambiguation.DisambiguationPattern{pattern = "^(%d+) TV series, series (%d+)$", type = 4},
validateDisambiguation.DisambiguationPattern{
validateDisambiguation.DisambiguationPattern{pattern = "^([%D]+) TV series, season (%d+)$", type = 5}, -- "VALIDATION_TYPE_COUNTRY_SEASON_NUMBER"
pattern = "^TV series%s+season%s+(%d+)$",
validateDisambiguation.DisambiguationPattern{pattern = "^([%D]+) TV series, series (%d+)$", type = 5},
type = validateDisambiguation.VALIDATION_TYPE_SEASON_NUMBER
validateDisambiguation.DisambiguationPattern{pattern = "^([%D]+) season (%d+)$", type = 5}, -- "VALIDATION_TYPE_COUNTRY_SEASON_NUMBER"
},
validateDisambiguation.DisambiguationPattern{pattern = "^([%D]+) series (%d+)$", type = 5},
 
validateDisambiguation.DisambiguationPattern{pattern = "^([%D]+) season$", type = 7}, -- "VALIDATION_TYPE_COUNTRY_SEASON"
-- YEAR + COUNTRY + SEASON
validateDisambiguation.DisambiguationPattern{pattern = "^season (%d+)$", type = 6}, -- "VALIDATION_TYPE_SEASON_NUMBER"
-- "2008 British TV series season 2"
validateDisambiguation.DisambiguationPattern{pattern = "^series (%d+)$", type = 6}
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('Module:Infobox television disambiguation check')
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 otherInfoboxListMerged = getOtherInfoboxListMerged()
 
return validateDisambiguation.main(title, "infobox television season", validDisambiguationTypeList, validDisambiguationPatternList, exceptionList, otherInfoboxListMerged, invalidTitleStyleList)
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, debugString = _main(args)
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 category, debugString = _main(args)
local _, debugString = _main(args)
return debugString
return debugString
end
end


return p
return p