Module:Fiction redirect category handler/Franchise
Appearance
This module depends on the following other modules: |
Module:Fiction redirect category handler/Franchise is used handle the shared code used by franchise-specific module handlers, such as Module:Arrowverse redirect category handler.
Usage
local franchiseHandlerModule = require('Module:Fiction redirect category handler/Franchise')
return franchiseHandlerModule.main(objectType, frame, args, franchiseName, tvSeriesNameList)
require("strict")
local p = {}
--[[
Local function which adds the names relevant TV series to the args table.
Franchise templates, such as the Arrowverse-specific one, have short parameters that editors can use
instead of the full TV series name.
This functions checks if the user-input parameters match the ones on the list,
and if they do, adds them to the list.
Franchise templates can also use a "franchise" default parameter
so all members will automatically be tagged in the franchise category,
as well as the specific TV series category.
--]]
local function getListOfSeriesTags(templateArgs, franchise, tvSeriesNameList, validArgs)
local seriesArgs = {}
for i, v in ipairs(tvSeriesNameList) do
local tvSeries = tvSeriesNameList[i]
-- Check if the user-input parameter matches one on the list;
-- If it matches, add the series name to the list.
if (templateArgs[tvSeries.argName]) then
table.insert(seriesArgs, tvSeries.seriesName)
table.insert(validArgs, tvSeries.argName)
end
end
if (#seriesArgs > 0) then
table.insert(seriesArgs, franchise)
-- This parameter is used by the relevant "R to fictional x" templates
-- to enable multi-series categories.
seriesArgs["multi"] = "yes"
templateArgs["multi_series_name_table"] = seriesArgs
else
templateArgs["series_name"] = franchise
end
return templateArgs, validArgs
end
--[[
Public function which handles the main operation.
--]]
function p.main(args, objectType, franchise, tvSeriesNameList)
local validArgs = {"correct_disambiguation", "multi", "multi_series_name_table"}
args, validArgs = getListOfSeriesTags(args, franchise, tvSeriesNameList, validArgs)
-- Franchise articles, such as the Arrowverse and the Marvel Cinematic Universe,
-- use the franchise name as disambiguation for articles, and not a TV series or film name.
args["correct_disambiguation"] = franchise
local fictionRedirectCategoryHandler = require("Module:Fiction redirect category handler")
return fictionRedirectCategoryHandler["_" .. objectType](args, validArgs)
end
--[[
Public function which is used for the /testcases to verify correct series name output.
--]]
function p.testSeriesName(args, franchise, tvSeriesNameList)
args = getListOfSeriesTags(args, franchise, tvSeriesNameList, {})
if (args.series_name) then
return args.series_name
else
return args.multi_series_name_table[1]
end
end
return p