Module:Sandbox/RexxS/Dabcheck

-- Helper function that checks a piece of text with 3-way match: valid match, invalid match, no match It returns 3 configurable results. The function test tests if a title contains a valid disabiguator. --

local p = {}

-- exportable to other modules function p._3way_check(text, args) if not text or text == "" then return false, "no text" end

-- Check if there is a match on the valid list for _, v in ipairs(args.valid) do		if text:match(v) then return true, "" end end

-- Check if there is a match on the invalid list for k, v in pairs(args.invalid) do		if text:match(k) then return false, v		end end

-- if we've got this far, then there's no match return false, args.nomatch end

function p.test(frame) local title = frame.args.title or "" if title == "" then return "No title" end

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)" }	-- finish if the title has brackets that are part of the title (not disambiguation) for _, v in ipairs(exceptionList) do		if v == title then return "Title on exception list" end end

-- extract the disambiguation text local disambiguation = string.match(title, "%s%((.-)%)")

-- set up the three possibilities local args = { valid = { "TV series", "TV program", "TV programme", "TV film", "film", "miniseries", "serial", "game show", "talk show", "web series" },		invalid = { -- for testing we'll just see the category, not categorise the page ["franchise"] = "Category:Television articles using incorrect infobox - F", ["season"] = "Category:Television articles using incorrect infobox - S" -- ["franchise"] = "", -- ["season"] = "" },		-- for testing we'll just see the category, not categorise the page nomatch = "Category:Television articles with incorrect naming style" }

local validmatch, msg = p._3way_check(disambiguation, args) if validmatch then return "Valid title" else return msg end end

return p