Module:Sandbox/trappist the monk/dab check

local type_specifier = {'TV series', 'TV programme', 'TV program', 'TV film', 'film', 'miniseries', 'serial', 'game show', 'talk show', 'web series'};

local function validate (dab) local dab_no_specifier = ''; local count = 0; for i, v in ipairs (type_specifier) do dab_no_specifier, count = dab:gsub (v .. '$', ''); if 0 ~= count then break;																-- found and removed a specifier end end

if 0 == count then return 'error: no type specifier'; end dab_no_specifier = mw.text.trim (dab_no_specifier);							-- remove trailing white space if there is any

local year = ''; local adj = ''; if dab_no_specifier:match ('^%d+ %D+') then year, adj = dab_no_specifier:match ('^(%d+) (%D+)');					-- had year and country adjective -- call to validate year -- call to validate country adjective return 'type specifier + adjective + year'; elseif dab_no_specifier:match ('^%d+$') then year = dab_no_specifier:match ('^%d+');									-- had year -- call to validate year return 'type specifier + year ' .. year; elseif dab_no_specifier:match ('^%D+$') then adj = dab_no_specifier;													-- had country adjective -- call to validate country adjective return 'type specifier + adjective ' .. adj; elseif '' == dab_no_specifier then return 'type specifier only';											-- no dab extensions else return 'error: malformed dab'; end end

return {validate=validate};