Module:Infobox film/track

local p = {}

local function check(args, sources, targets) local source for _, param in ipairs(sources) do		if args[param] and args[param] ~= '' then source = param break end end if not source then return false end local hasError = false for link in mw.ustring.gmatch(args[source], '%[%^%[%+%]%]') do		local name = mw.ustring.match(link, '([^%|]+)%]%]$', 3) for _, param in ipairs(targets) do			if args[param] and args[param] ~= '' then local match = mw.ustring.match(args[param], '.?.?%f[%w]' .. name .. '%f[%W]') -- Eliminate duplicate links if match and not mw.ustring.find(match, '^%[[%[:]') then					mw.log('The link "' .. link .. '" in |' .. source .. '= should be moved to |' .. param .. '=.')					hasError = true					break				end			end		end	end	return hasError end

function p.main(frame) local args = frame:getParent.args local hasError1 = check(args, {'producer', 'producers'}, {'writer', 'writers', 'screenplay', 'story', 'based_on'}) local hasError2 = check(args, {'music'}, {'cinematography', 'editing'}) if hasError1 or hasError2 then local namespace = mw.title.getCurrentTitle.namespace if namespace == 0 or namespace == 118 then return '' end end end

return p