Modul:Infobox television disambiguation check

-- This module requires the use of the following modules.
local getArgs = require('Modul:Arguments').getArgs
local validateDisambiguation = require('Modul:Television infoboxes disambiguation check')

local p = {}

local validDisambiguationTypeList = {
	"TV serija",
	"TV program",
	"TV film",
	"film",
	"miniserija",
	"nadaljevanka",
	"kviz",
	"pogovorna oddaja",
	"spletna serija"
}

local validDisambiguationPatternList  = {
	validateDisambiguation.DisambiguationPattern{pattern = "^(%d+) (%D+)", type = 1}, --"VALIDATION_TYPE_YEAR_COUNTRY"
	validateDisambiguation.DisambiguationPattern{pattern = "^%d+$", type = 2}, --"VALIDATION_TYPE_YEAR"
	validateDisambiguation.DisambiguationPattern{pattern = "^%D+$", type = 3} --"VALIDATION_TYPE_COUNTRY"
}

local exceptionList = {
	"The (206)",
	"Bigg Boss (Hindujska TV serija)",
	"Bigg Boss (Malayalamska TV serija)",
	"Bigg Boss (Teluguška TV serija)",
	"Cinderella (Apakah Cinta Hanyalah Mimpi?)",
	"Deal or No Deal Malaysia (Kviz v angleščini)",
	"Deal or No Deal Malaysia (Kviz v mandarinščini)",
	"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",
	"M.R.S. (Najbolj iskana oddaja)",
	"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 otherInfoboxList = {
	["franšiza"] = "[[Kategorija:Televizijski članki, ki uporabljajo napačno infopolje|FRANŠIZA]]",
	["radio"] = "[[Kategorija:Televizijski članki, ki uporabljajo napačno infopolje|R]]",
	["sezona"] = "[[Kategorija:Televizijski članki, ki uporabljajo napačno infopolje|S]]",
	["serija %d*"] = "[[Kategorija:Televizijski članki, ki uporabljajo napačno infopolje|S]]",
	["TV programming block"] = "[[Kategorija:Televizijski članki, ki uporabljajo napačno infopolje|P]]",
	["filmska serija"] = "[[Kategorija:Televizijski članki, ki uporabljajo napačno infopolje|FILM]]"
}

-- Empty for now.
local invalidTitleStyleList = {}

local function _main(args)
	local title = args[1]
	return validateDisambiguation.main(title, "infopolje televizija", validDisambiguationTypeList, validDisambiguationPatternList, exceptionList, otherInfoboxList, invalidTitleStyleList)
end

function p.main(frame)
	local args = getArgs(frame)
	local category, debugString = _main(args)
	return category
end

local function removeFromArray(t, delete)
    local j = 1
    local n = #t

    for i = 1, n do
        if (t[i] ~= delete) then
            -- Move i's kept value to j's position, if it's not already there.
            if (i ~= j) then
                t[j] = t[i]
                t[i] = nil
            end
            j = j + 1 -- Increment position of where we'll place the next kept value.
        else
            t[i] = nil
        end
    end

    return t
end

function p.getDisambiguationTypeList()
	return removeFromArray(validDisambiguationTypeList, "TV serija")
end

function p.test(frame)
	local args = getArgs(frame)
	local category, debugString = _main(args)
	return debugString
end

return p