Marvel Database
Register
Advertisement

Documentation for this module may be created at Module:StaffCorrection/doc

local p = {}
local StaffNames = mw.loadData('Module:StaffCorrection/data')
local h = require("Module:HF")
local exceptions_list = mw.loadData('Module:StaffCorrection/exceptions')
local pseudonyms_list = mw.loadData('Module:StaffCorrection/pseudonyms')
local getArgs = require('Dev:Arguments').getArgs 


--------------------------------------------------------------------------------
function p.lua_get_corrected_name(name)
	local function in_list(list, value) -- normal "h.in_list" function doesn't work then list is loaded from another page
		local output = false
		for i, v in ipairs(list) do
			if v == value
				then 
					output = true 
					break
			end
		end
		return output
	end
	local exception = false
	local output = ''
	
	if not h.isempty(name)
		then 
			output = StaffNames[ string.lower( mw.text.trim(name) ) ] or mw.text.trim(name)
			if in_list(exceptions_list, output) or in_list(pseudonyms_list, name)
				then exception = true
			end
	end
	
	return output, exception
end


--------------------------------------------------------------------------------
function p.get_corrected_name(frame)
	local exception
	local output
	output, exception =  p.lua_get_corrected_name(frame.args[1])
	return output
end


--------------------------------------------------------------------------------
function p.lua_get_staff_link_and_category(name, subcategory)
	local exception
	local corrected_name = ''
	local s = ''
	local category = ''
	local output = ''
	
	if not h.isempty(name)
		then
			name = mw.text.trim(name)
			name = h.break_link(name, 1)
			s = string.lower(name)
			if h.in_list( {'uncredited', 'n/a'}, s )
				then output = 'Uncredited'
				else
					corrected_name, exception = p.lua_get_corrected_name(name)
					if corrected_name ~= name and exception == true
						then 
							if subcategory == 'Creator' 
								then output = h.Link(corrected_name, corrected_name)
								else output = h.Link(corrected_name, corrected_name)..' (credited under different name)'
							end
						else output = h.Link(corrected_name, name)
					end
					if not h.isempty(subcategory)
						then category = corrected_name..'/'..subcategory
					end
			end
	end
	
	return output, category
end


--------------------------------------------------------------------------------
-- takes a list of names (several names could be separated by ";") and returns links and categories
function p.lua_get_list_of_staff(list, subcategory)
	local i
	local link
	local category
	local output_categories = ''
	local output = ''

	if not h.isempty(list)
		then
			output = {}
			output_categories = {}
			list = mw.text.split(list, ';')
			for i = 1, #list do
				link, category = p.lua_get_staff_link_and_category(list[i], subcategory)
				table.insert(output, link)
				table.insert(output_categories, category)
			end
			output = mw.text.listToText(output, ', ', ', ')
	end
	
	return output, output_categories
end


function p.get_list_of_staff(frame)
	local args = getArgs(frame)
	local value = args[1]
	local subcategory = args[2]
	local output_categories
	local output
	
	output, output_categories = p.lua_get_list_of_staff(value, subcategory)

	return output..h.add_categories(output_categories)
end	


--------------------------------------------------------------------------------
-- takes list of similarly named firelds (args) with "field_name" and returns links and categories
function p.lua_get_list_of_staff_from_args(args, field_name, subcategory)
	local i = 1
	local link
	local category
	local output_categories = {}
	local output = {}

	if not h.isempty(args[field_name..i])
		then
			for i = 1, 100 do
				link, category = p.lua_get_staff_link_and_category(args[field_name..i], subcategory)
				if link ~= ''
					then 
						table.insert(output, link)
						table.insert(output_categories, category)
				end
			end
			--output = mw.text.listToText(output, ', ', ', ')
	end
	
	return output, output_categories
end


function p.get_list_of_staff_from_args(frame)
	local args = getArgs(frame)
	local field_name = args[1]
	local subcategory = args[2]
	local output_categories
	local output
	
	output, output_categories = p.lua_get_list_of_staff_from_args(args, field_name, subcategory)

	return mw.text.listToText(output, ', ', ', ')..h.add_categories(output_categories)
end

--------------------------------------------------------------------------------
function p.lua_get_creators(list)
	local links = ''
	local categories = ''

	if not h.isempty(list)
		then links, categories = p.lua_get_list_of_staff(list, 'Creator')
	end
	
	return links, categories
end


return p
Advertisement